158 lines
5.6 KiB
Markdown
158 lines
5.6 KiB
Markdown
### 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<Entry<String, ArrayList<String>>> entrySet = packetMap.entrySet();
|
|
|
|
// 요청Que의 패킷으로 packetMap key값 검색
|
|
for (Entry<String, ArrayList<String>> 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<String, ArrayList<String>> 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<LastLcTrackVO> lcVoList = new ArrayList<LastLcTrackVO>();
|
|
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);
|
|
---
|
|
### 기타
|