diff --git a/src/main/java/com/xydl/cac/iec/IEDCollectService.java b/src/main/java/com/xydl/cac/iec/IEDCollectService.java index e0a2c03..7f360f5 100644 --- a/src/main/java/com/xydl/cac/iec/IEDCollectService.java +++ b/src/main/java/com/xydl/cac/iec/IEDCollectService.java @@ -15,6 +15,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.util.CollectionUtils; +import java.net.SocketException; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -88,7 +89,11 @@ public class IEDCollectService { StaticVariable.doneWarnMap.put(key, "1"); _webSocketServer.sendMessage(err, null); } - RealTimeDataService.onErrorCheck(ied.getId()); + if (ex instanceof SocketException) { + NetErrorThread thread = new NetErrorThread(); + thread.iedId = ied.getId(); + thread.run(); + } } finally { iecClient.disconnect(); } diff --git a/src/main/java/com/xydl/cac/iec/NetErrorThread.java b/src/main/java/com/xydl/cac/iec/NetErrorThread.java new file mode 100644 index 0000000..de210c4 --- /dev/null +++ b/src/main/java/com/xydl/cac/iec/NetErrorThread.java @@ -0,0 +1,15 @@ +package com.xydl.cac.iec; + +import com.xydl.cac.model.StaticVariable; + +public class NetErrorThread extends Thread { + public int iedId; + + @Override + public void run() { + IecClient iecClient = StaticVariable.realTimeClientMap.get(iedId); + if (iecClient != null) { + iecClient.associationClosed(null); + } + } +} diff --git a/src/main/java/com/xydl/cac/iec/RealTimeDataService.java b/src/main/java/com/xydl/cac/iec/RealTimeDataService.java index 7c59672..8216e96 100644 --- a/src/main/java/com/xydl/cac/iec/RealTimeDataService.java +++ b/src/main/java/com/xydl/cac/iec/RealTimeDataService.java @@ -66,13 +66,6 @@ public class RealTimeDataService { } } - public static void onErrorCheck(Integer iedId) { - IecClient iecClient = StaticVariable.realTimeClientMap.get(iedId); - if (iecClient != null) { - iecClient.associationClosed(null); - } - } - public void stopCollect(Integer iedId) { IecClient iecClient = StaticVariable.realTimeClientMap.get(iedId); if (iecClient != null) {