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.common.IPAddrType;
import com.dispose.dispose.impl.DPTechImpl; import com.dispose.dispose.impl.DPTechImpl;
import com.dispose.dispose.impl.VirtualDeviceImpl; import com.dispose.dispose.impl.VirtualDeviceImpl;
import java.util.concurrent.ConcurrentHashMap;
/** /**
* The type Device router. * The type Device router.
*/ */
public class DeviceRouter { 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. * Device router factory dispose entry manager.
* *
@ -20,16 +37,25 @@ public class DeviceRouter {
* @return the dispose entry manager * @return the dispose entry manager
*/ */
public static DisposeEntryManager deviceRouterFactory(int devType, String ipAddr, IPAddrType ipType) { public static DisposeEntryManager deviceRouterFactory(int devType, String ipAddr, IPAddrType ipType) {
String mapKey = getMapKey(devType, ipAddr);
if (GlobalVar.USED_VIRTUAL_DISPOSE_MODE) { if (DEVICE_CACHE_MAP.containsKey(mapKey)) {
return new VirtualDeviceImpl(ipAddr); 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()) { DisposeEntryManager dev = new VirtualDeviceImpl(ipAddr);
return new DPTechImpl(ipAddr); DEVICE_CACHE_MAP.put(mapKey, dev);
} return dev;
return new VirtualDeviceImpl(ipAddr);
} }
/** /**