### 5월 6일자 MainController 소스 ( ConnectCheck ~ ) ```JAVA if (ConnectCheck()) { int queueSize = sendQue.size(); boolean swich = true; boolean swich2 = true; if (queueSize != 0) { MsgObjVO msg = new MsgObjVO(); String sGetMsg = ""; for (int z = 0; z < queueSize; z++) { if (msgId == 11) { sGetMsg = sendQue.poll(); /* 동일 메시지의 이전 패킷이 성공 수신 되었다면 나머지는 전송안함(skip) */ String sKey = null; Set>> entrySet = packetMap.entrySet(); // 요청Que의 패킷으로 packetMap key값 검색 for (Entry> entry : entrySet) { if (entry.getValue().get(0).equals(sGetMsg)) { sKey = entry.getKey(); // 성공 Count가 있으면 스킵 if (Integer.parseInt(packetMap.get(sKey).get(5)) > 0) { GmtLogManager.getInstance().writeLevelLog("[MainController.send] - Cancel remaining packets " + sGetMsg, LogLevelType.LOG_INFO, "SendPacket"); continue; } } } /* 요청하기 직전 해당시점에 선박이 입항되어 있으면 (skip) */ int slot_no = Integer.parseInt(sGetMsg.split(",")[10]); ShipInfoVO ship = scheduleManager.getShipInfo().get(slot_no); if(ship.getInout_part().equals("I")) { // 입항한 선박에 대한 모든 요청 패킷 취소 for (Entry> entry : entrySet) { if (entry.getValue().get(0).split(",")[10].equals(slot_no)) { sKey = entry.getKey(); GmtLogManager.getInstance().writeLevelLog("[MainController.send] - Cancel 입항한 선박 " + sGetMsg, LogLevelType.LOG_INFO, "SendPacket"); continue; } } } /* 요청하기 직전 해당시점에 직전 30분 내에 자동 수신되었다면 (skip) */ List lcVoList = new ArrayList(); int iMin = 30 ; try { // 30분, 60분 동안 위치 수신이 없는 선박목록(최종위치테이블) LastLcTrackVO ltVO = new LastLcTrackVO(); ltVO.setMin(iMin); lcVoList = passivlcService.selectLastLcList(ltVO); } catch (SQLException se) { GmtLogManager.getInstance().writeLevelLog("[CheckLastLcController] CheckLastLc - selectLastLcList : " + se.getMessage(), LogLevelType.LOG_ERROR, "AllLog"); } catch (Exception e) { GmtLogManager.getInstance().writeLevelLog("[CheckLastLcController] CheckLastLc - selectLastLcList : " + e.getMessage(), LogLevelType.LOG_ERROR, "AllLog"); } if(lcVoList.isEmpty()) { GmtLogManager.getInstance().writeLevelLog("[MainController.send] - 30분 이내 자동 위치 수신선박 " + sGetMsg, LogLevelType.LOG_INFO, "SendPacket"); continue; } /* 수동위치보고인경우 "§"마다 Sleep(22.05월 수정) */ if (sGetMsg.startsWith("§")) { Thread.sleep(sleepThread); // 전송해야 할 패킷에 Sleep 구분자 제거 sGetMsg = sGetMsg.substring(1); } }else { if(sendQue.peek().substring(10,15).substring(2, 3).equals("0")) { // 인천 }else if(sendQue.peek().substring(10,15).substring(2, 3).equals("1")) { // 포항 if(swich) { Thread.sleep(sleepThread); swich = false; } }else if(sendQue.peek().substring(10,15).substring(2, 3).equals("2")) { // 고흥 if(swich2) { Thread.sleep(sleepThread); swich2 = false; } } sGetMsg = sendQue.poll(); } msg.setMsg(sGetMsg.getBytes("EUC-KR")); GmtLogManager.getInstance().writeLevelLog(sGetMsg, LogLevelType.LOG_INFO, "SendPacket"); // 패킷 전송 sendClient(clientInfoList.get(0).getIp(), clientInfoList.get(0).getPort(), msg); cnt++; // 메시지간 10milliSec 텀 Thread.sleep(10); } GmtLogManager.getInstance().writeLevelLog( "[MainController.send] - Send " + sender + " [ SUCCESS CNT : " + cnt + " ] ", LogLevelType.LOG_INFO, "SendPacket"); // 메세지 송신 횟수 == 현재 반복횟수가 동일 할 시 sleep 수정 if((msgSndCnt-1) == repeat) { Thread.sleep(msgTerm); }else { Thread.sleep(sleepThread); } } } else { int queueSize = sendQue.size(); if (queueSize != 0) { GmtLogManager.getInstance().writeLevelLog("[MainController.send " + sender + "(No clients connected)]", LogLevelType.LOG_INFO, "FailPacket"); for (int z = 0; z < queueSize; z++) { GmtLogManager.getInstance().writeLevelLog(sendQue.poll(), LogLevelType.LOG_ERROR, "FailPacket"); cnt++; } GmtLogManager.getInstance().writeLevelLog( "[MainController.send(No clients connected)] - Send " + sender + " Log [ FAIL CNT : " + cnt + " ] ", LogLevelType.LOG_ERROR, "FailPacket"); } } } } catch (Exception e) { GmtLogManager.getInstance().writeLevelLog("[MainController.send] " + e.getMessage(), LogLevelType.LOG_ERROR, "FailPacket"); e.printStackTrace(); } } ``` >int slot_no = Integer.parseInt(sGetMsg.split(",")[10]); ShipInfoVO ship = scheduleManager.getShipInfo().get(slot_no); --- ### 기타