REM:
1. 增加处置设备对象缓存,避免每次调用都创建一个新设备
This commit is contained in:
HuangXin 2020-04-28 10:45:23 +08:00
parent 954c0001a5
commit cc4c0a010b
1 changed files with 33 additions and 7 deletions

View File

@ -5,12 +5,29 @@ import com.dispose.common.GlobalVar;
import com.dispose.common.IPAddrType;
import com.dispose.dispose.impl.DPTechImpl;
import com.dispose.dispose.impl.VirtualDeviceImpl;
import java.util.concurrent.ConcurrentHashMap;
/**
* The type Device router.
*/
public class DeviceRouter {
/**
* The constant deviceCacheMap.
*/
private static final ConcurrentHashMap<String, DisposeEntryManager> DEVICE_CACHE_MAP = new ConcurrentHashMap<>();
/**
* Gets map key.
*
* @param devType the dev type
* @param ipAddr the ip addr
* @return the map key
*/
private static String getMapKey(int devType, String ipAddr) {
return devType + "_" + ipAddr;
}
/**
* Device router factory dispose entry manager.
*
@ -20,16 +37,25 @@ public class DeviceRouter {
* @return the dispose entry manager
*/
public static DisposeEntryManager deviceRouterFactory(int devType, String ipAddr, IPAddrType ipType) {
String mapKey = getMapKey(devType, ipAddr);
if (GlobalVar.USED_VIRTUAL_DISPOSE_MODE) {
return new VirtualDeviceImpl(ipAddr);
if (DEVICE_CACHE_MAP.containsKey(mapKey)) {
return DEVICE_CACHE_MAP.get(mapKey);
} else {
if (GlobalVar.USED_VIRTUAL_DISPOSE_MODE) {
DisposeEntryManager dev = new VirtualDeviceImpl(ipAddr);
DEVICE_CACHE_MAP.put(mapKey, dev);
return dev;
} else if (devType == DisposeDeviceType.DPTECH_UMC.getCode()) {
DisposeEntryManager dev = new DPTechImpl(ipAddr);
DEVICE_CACHE_MAP.put(mapKey, dev);
return dev;
}
}
if (devType == DisposeDeviceType.DPTECH_UMC.getCode()) {
return new DPTechImpl(ipAddr);
}
return new VirtualDeviceImpl(ipAddr);
DisposeEntryManager dev = new VirtualDeviceImpl(ipAddr);
DEVICE_CACHE_MAP.put(mapKey, dev);
return dev;
}
/**