This commit is contained in:
zhongchao
2021-01-26 18:58:37 +08:00
parent dfe87f2fc9
commit 3d1a2d70fc
8 changed files with 51 additions and 82 deletions

View File

@@ -0,0 +1,38 @@
package com.mogo.realtime.spi;
import com.elegant.spi.AbstractDelegateManager;
import com.mogo.cloud.passport.MoGoAiCloudClient;
import com.mogo.realtime.Interface.RealTimeProvider;
/**
* 提供RealTime SPI接口实例对象管理类
*/
class RealTimeProviderDelegateManager extends AbstractDelegateManager<RealTimeProvider> {
private static RealTimeProviderDelegateManager sInstance = null;
private RealTimeProvider mRealTimeProvider = null;
public static RealTimeProviderDelegateManager getInstance() {
if (sInstance == null) {
synchronized (RealTimeProviderDelegateManager.class) {
if (sInstance == null) {
sInstance = new RealTimeProviderDelegateManager();
}
}
}
return sInstance;
}
public RealTimeProviderDelegateManager() {
loadDelegates(MoGoAiCloudClient.getInstance().getContext(), RealTimeProvider.class, new DelegateListener<RealTimeProvider>() {
@Override
public void onDelegate(String unit, RealTimeProvider p) {
mRealTimeProvider = p;
}
});
}
public RealTimeProvider getRealTimeProvider(){
return mRealTimeProvider;
}
}

View File

@@ -0,0 +1,48 @@
package com.mogo.realtime.spi;
import com.mogo.realtime.Interface.RealTimeProvider;
import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.realtime.entity.CloudLocationInfo;
import java.util.List;
/**
* RealTime Provider SPI 单例对象
*/
public class RealTimeProviderImp implements RealTimeProvider {
private static volatile RealTimeProviderImp sInstance = null;
private final RealTimeProvider mDelegate;
public static RealTimeProviderImp getInstance() {
if (sInstance == null) {
synchronized (RealTimeProviderImp.class) {
if (sInstance == null) {
sInstance = new RealTimeProviderImp();
}
}
}
return sInstance;
}
public RealTimeProviderImp() {
mDelegate = (RealTimeProvider) RealTimeProviderDelegateManager.getInstance();
}
@Override
public List<ADASRecognizedResult> getLastADASRecognizedResult() {
if (mDelegate != null) {
return mDelegate.getLastADASRecognizedResult();
}
return null;
}
@Override
public List<CloudLocationInfo> getLocationMsg() {
if (mDelegate != null) {
mDelegate.getLocationMsg();
}
return null;
}
}