public void runThread() { try { logwrite.write("ISPSClient runThread", "\t ISPS Thread Start!!"); String readLine = ""; while (true) { readLine = reader.ReadLine(); logwrite.write("ISPSReceiver runThread", readLine); } } catch (Exception e) { if (reader != null) { reader.Close(); reader = null; } if (writeStream != null) { writeStream.Close(); writeStream = null; } logwrite.write("ISPSReceiver runThread", e.ToString()); } finally { ispsClient.sessionClose(); // 사용자가 Disconnect 를 요청하지 않고 세션이 끊어진 경우 재접속 시도 if (!ispsClient.getDisconnectReq()) { logwrite.write("ISPSReceiver runThread", "########## ISPS Session Closed !! ##########"); Event evt = new Event(); evt.setEvtCode(EVENT_TYPE.ON_DISCONNECTION); evt.setEvtMsg("ISPS Session Disconnected"); evt.setCurIspsIP(ispsClient.getCurrentServerIP()); finesseObj.raiseEvent(evt); if (ispsClient.reConnect() != ERRORCODE.SUCCESS) { // 서버 세션이 끊어지고, 재접속이 안될시 서버 프로세스가 올라올때까지 감지하는 스레드 시작한다. ISocketSender ispsSender = new ISPSSender(logwrite, ispsClient); ThreadStart ts = new ThreadStart(ispsSender.runThread); Thread thread = new Thread(ts); thread.Start(); } } } }
public int fnDisconnect() { logwrite.write("", ""); logwrite.write("fnConnect", "\t ** call fnDisconnect() ** "); ErrorEvent evt = new ErrorEvent(); evt.setEvtCode(EVENT_TYPE.ON_DISCONNECTION); if (FinesseClient != null) { FinesseClient.disconnect(); evt.setEvtMsg("Finesse Session Disconnected"); evt.setCurFinesseIP(FinesseClient.getCurrentServerIP()); raiseEvent(evt); } if (AEMSClient != null) { AEMSClient.disconnect(); evt.setEvtMsg("AEMS Session Disconnected"); evt.setCurAemsIP(AEMSClient.getCurrentServerIP()); raiseEvent(evt); } if (ISPSClient != null) { ISPSClient.disconnect(); evt.setEvtMsg("ISPS Session Disconnected"); evt.setCurIspsIP(ISPSClient.getCurrentServerIP()); raiseEvent(evt); } isFinesseConnected = false; isAEMSConnected = false; isISPSConnected = false; logwrite.write("fnDisconnect", "\t Return Data : " + ERRORCODE.SUCCESS); return(ERRORCODE.SUCCESS); }