장동신 장동신 2024-12-12
패킷 전송 로직 일부 수정
@30d14f147f11d75588e6aa136cdecfaedd18359b
src/main/java/com/munjaon/client/server/service/CollectClientService.java
--- src/main/java/com/munjaon/client/server/service/CollectClientService.java
+++ src/main/java/com/munjaon/client/server/service/CollectClientService.java
@@ -272,7 +272,11 @@
             SmsMessage.makeDataForDeliver(sendBuffer, data);
             saveLog("[MESSAGE SEND] [... ...]");
             saveLog("[MESSAGE DATA : " + data.toString() + "]");
-            socketChannel.write(sendBuffer);
+
+            while (sendBuffer.hasRemaining()) {
+                socketChannel.write(sendBuffer);
+            }
+
             long MSG_SEND_TIME = System.currentTimeMillis();
             while (true) {
                 if (System.currentTimeMillis() - MSG_SEND_TIME >= Packet.LIMIT_PACKET_SEND_TIMEOUT) {
@@ -328,7 +332,11 @@
             LmsMessage.makeDataForDeliver(sendBuffer, data);
             saveLog("[MESSAGE SEND] [... ...]");
             saveLog("[MESSAGE DATA : " + data.toString() + "]");
-            socketChannel.write(sendBuffer);
+
+            while (sendBuffer.hasRemaining()) {
+                socketChannel.write(sendBuffer);
+            }
+
             long MSG_SEND_TIME = System.currentTimeMillis();
             while (true) {
                 if (System.currentTimeMillis() - MSG_SEND_TIME >= Packet.LIMIT_PACKET_SEND_TIMEOUT) {
@@ -505,132 +513,6 @@
         }
     }
 
-    private void mmsMessageService_bak(MunjaonMsg data) throws Exception {
-        try {
-            /* 이미지 경로 디폴트 경로 사용 여부 */
-            String defaultYn = getProp("MMS", "DEFAULT_PATH_YN");
-            /* MMS Image 저장 경로 */
-            String path = null;
-            if ("Y".equals(defaultYn)) {
-                path = System.getProperty("ROOTPATH") + File.separator + "mmsfile" + File.separator;
-            } else {
-                path = getProp("MMS", "FILEPATH") + File.separator;
-            }
-
-            /* 공통 메시지 유효성 체크 */
-            int checkCommonCode = MessageCheckUtil.validateMessageForCommon(data);
-            int checkMsgCode = MessageCheckUtil.validateMessageForMedia(data);
-            int checkImageCode = MessageCheckUtil.validateMessageForImage(data, path);
-            if (checkCommonCode != ErrorCode.OK.getCode() || checkMsgCode != ErrorCode.OK.getCode() || checkImageCode != ErrorCode.OK.getCode()) {
-                saveLog("[MESSAGE FILTER] [COMMON_CODE : " + checkCommonCode + "] [MSG_CODE : " + checkMsgCode + "] [IMAGE_CODE : " + checkImageCode + "]");
-                saveLog("[MESSAGE DATA : " + data.toString() + "]");
-                /* 전송처리 */
-                worker.updateToDeliver(data.getMsgId());
-                /* 실패처리 */
-                MunjaonMsg errorMsg = null;
-                if (checkCommonCode != ErrorCode.OK.getCode()) {
-                    errorMsg = MessageCheckUtil.setReportMessage(data.getMsgId(), "00", String.valueOf(checkCommonCode), MessageUtil.getTime(), "ETC");
-                }else if (checkMsgCode != ErrorCode.OK.getCode()) {
-                    errorMsg = MessageCheckUtil.setReportMessage(data.getMsgId(), "00", String.valueOf(checkMsgCode), MessageUtil.getTime(), "ETC");
-                } else {
-                    errorMsg = MessageCheckUtil.setReportMessage(data.getMsgId(), "00", String.valueOf(checkImageCode), MessageUtil.getTime(), "ETC");
-                }
-                worker.updateToReport(errorMsg);
-                /* 처리완료 */
-                return;
-            }
-
-            /* 정상인 경우 메시지 전송 */
-            ByteBuffer sendBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + MmsMessage.DELIVER_MMS_BODY_LENGTH);
-            ByteBuffer recvBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + MmsMessage.DELIVER_MMS_ACK_BODY_LENGTH);
-            int fileCount = 0;
-            /* File check */
-            ByteBuffer file01Buffer = MmsMessage.makeImageForDeliver(path, data.getFilename01());
-            if (file01Buffer != null) {
-                saveLog("file01Buffer : " + file01Buffer.capacity());
-                fileCount++;
-            }
-            ByteBuffer file02Buffer = MmsMessage.makeImageForDeliver(path, data.getFilename02());
-            if (file02Buffer != null) {
-                saveLog("file02Buffer : " + file02Buffer.capacity());
-                fileCount++;
-            }
-            ByteBuffer file03Buffer = MmsMessage.makeImageForDeliver(path, data.getFilename03());
-            if (file03Buffer != null) {
-                saveLog("file03Buffer : " + file03Buffer.capacity());
-                fileCount++;
-            }
-            /* fileCount 저장 */
-            data.setFileCount(fileCount);
-
-            Header.putHeader(sendBuffer, Header.COMMAND_DELIVER, MmsMessage.DELIVER_MMS_BODY_LENGTH);
-            MmsMessage.makeDataForDeliver(sendBuffer, data);
-            saveLog("[MESSAGE SEND] [... ...]");
-            saveLog("[MESSAGE DATA : " + data.toString() + "]");
-
-            ByteBuffer[] byteBuffers = new ByteBuffer[fileCount + 1];
-            int index = 0;
-            int mmsBufferLength = sendBuffer.capacity();
-            byteBuffers[index] = sendBuffer;
-            socketChannel.write(sendBuffer);
-            index++;
-            if (file01Buffer != null) {
-                System.out.println("file01Buffer Last = " + file01Buffer.get(file01Buffer.capacity() - 1));
-                mmsBufferLength += file01Buffer.capacity();
-                byteBuffers[index] = file01Buffer;
-                socketChannel.write(file01Buffer);
-                index++;
-            }
-            if (file02Buffer != null) {
-                System.out.println("file02Buffer Last = " + file02Buffer.get(file02Buffer.capacity() - 1));
-                mmsBufferLength += file02Buffer.capacity();
-                byteBuffers[index] = file02Buffer;
-                socketChannel.write(file02Buffer);
-                index++;
-            }
-            if (file03Buffer != null) {
-                System.out.println("file03Buffer Last = " + file03Buffer.get(file03Buffer.capacity() - 1));
-                mmsBufferLength += file03Buffer.capacity();
-                byteBuffers[index] = file03Buffer;
-                socketChannel.write(file03Buffer);
-            }
-
-            saveSystemLog("mmsBufferLength : " + mmsBufferLength);
-            saveSystemLog("byteBuffers : " + byteBuffers.length);
-            ByteBuffer mmsSendBuffer = ByteBuffer.allocate(mmsBufferLength);
-            Packet.mergeBuffers(mmsSendBuffer, byteBuffers);
-
-            System.out.println("mmsSendBuffer Last = " + mmsSendBuffer.get(mmsSendBuffer.capacity() - 1));
-
-//            socketChannel.write(mmsSendBuffer);
-//            socketChannel.write(byteBuffers);
-            long MSG_SEND_TIME = System.currentTimeMillis();
-            while (true) {
-                if (System.currentTimeMillis() - MSG_SEND_TIME >= Packet.LIMIT_PACKET_SEND_TIMEOUT) {
-                    saveLog("[messageSendTimeOut : Expired ... ... ... ... ... ... ...]");
-                    throw new Exception("messageSendTimeOut : Expired ... ... ... ... ... ... ...");
-                }
-                int recvCount = socketChannel.read(recvBuffer);
-                if (recvCount == -1) {
-                    saveLog("[MESSAGE SEND] [FAIL] [SOCKET IS CLOSED]");
-                    throw new Exception("DELIVER ERROR");
-                } else if (recvCount > 0) {
-                    setDeliverMsgId(data.getMsgId());
-//                    worker.updateToDeliver(data.getMsgId());
-                    saveLog("[MESSAGE SEND] [SUCCESS]");
-                    lastPacketSendTime = System.currentTimeMillis();
-                    break;
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            saveSystemLog("ERROR [" + e.getMessage() + "]");
-            saveSystemLog("ERROR DETAIL");
-            saveSystemLog(e.toString());
-            throw new Exception(e);
-        }
-    }
-
     private void katMessageService(MunjaonMsg data) throws Exception {
         try {
             /* 이미지 경로 디폴트 경로 사용 여부 */
@@ -675,7 +557,9 @@
             saveLog("[MESSAGE SEND] [... ...]");
             saveLog("[MESSAGE DATA : " + data.toString() + "]");
 
-            socketChannel.write(sendBuffer);
+            while (sendBuffer.hasRemaining()) {
+                socketChannel.write(sendBuffer);
+            }
 
             /* 파일 전송 */
             ByteBuffer fileHeadBuffer = KakaoMessage.makeJsonHeaderForDeliver(path, data.getKakaoJsonFile());
@@ -689,83 +573,6 @@
 //                saveLog("bytesWritten : " + bytesWritten);
 //            }
 
-            long MSG_SEND_TIME = System.currentTimeMillis();
-            while (true) {
-                if (System.currentTimeMillis() - MSG_SEND_TIME >= Packet.LIMIT_PACKET_SEND_TIMEOUT) {
-                    saveLog("[messageSendTimeOut : Expired ... ... ... ... ... ... ...]");
-                    throw new Exception("messageSendTimeOut : Expired ... ... ... ... ... ... ...");
-                }
-                int recvCount = socketChannel.read(recvBuffer);
-                if (recvCount == -1) {
-                    saveLog("[MESSAGE SEND] [FAIL] [SOCKET IS CLOSED]");
-                    throw new Exception("DELIVER ERROR");
-                } else if (recvCount > 0) {
-                    setDeliverMsgId(data.getMsgId());
-//                    worker.updateToDeliver(data.getMsgId());
-                    saveLog("[MESSAGE SEND] [SUCCESS]");
-                    lastPacketSendTime = System.currentTimeMillis();
-                    break;
-                }
-            }
-        } catch (Exception e) {
-            saveSystemLog("ERROR [" + e.getMessage() + "]");
-            saveSystemLog("ERROR DETAIL");
-            saveSystemLog(e.toString());
-            throw new Exception(e);
-        }
-    }
-
-    private void katMessageService_bak(MunjaonMsg data) throws Exception {
-        try {
-            /* 이미지 경로 디폴트 경로 사용 여부 */
-            String defaultYn = getProp("KAKAO", "DEFAULT_PATH_YN");
-            /* Kakao Json 저장 경로 */
-            String path = null;
-            if ("Y".equals(defaultYn)) {
-                path = System.getProperty("ROOTPATH") + File.separator + "kakaofile" + File.separator;
-            } else {
-                path = getProp("KAKAO", "FILEPATH") + File.separator;
-            }
-            /* 공통 메시지 유효성 체크 */
-            int checkCommonCode = MessageCheckUtil.validateMessageForCommon(data);
-            int checkMsgCode = MessageCheckUtil.validateMessageForKakao(data);
-            int checkFileCode = MessageCheckUtil.validateJsonFile(path, data.getKakaoJsonFile());
-
-            if (checkCommonCode != ErrorCode.OK.getCode() || checkMsgCode != ErrorCode.OK.getCode() || checkFileCode != ErrorCode.OK.getCode()) {
-                saveLog("[MESSAGE FILTER] [COMMON_CODE : " + checkCommonCode + "] [MSG_CODE : " + checkMsgCode + "] [JSON_FILE_CODE : " + checkFileCode + "]");
-                saveLog("[MESSAGE DATA : " + data.toString() + "]");
-                /* 전송처리 */
-                worker.updateToDeliver(data.getMsgId());
-                /* 실패처리 */
-                MunjaonMsg errorMsg = null;
-                if (checkCommonCode != ErrorCode.OK.getCode()) {
-                    errorMsg = MessageCheckUtil.setReportMessage(data.getMsgId(), "00", String.valueOf(checkCommonCode), MessageUtil.getTime(), "ETC");
-                }else if (checkMsgCode != ErrorCode.OK.getCode()) {
-                    errorMsg = MessageCheckUtil.setReportMessage(data.getMsgId(), "00", String.valueOf(checkMsgCode), MessageUtil.getTime(), "ETC");
-                } else {
-                    errorMsg = MessageCheckUtil.setReportMessage(data.getMsgId(), "00", String.valueOf(checkFileCode), MessageUtil.getTime(), "ETC");
-                }
-                worker.updateToReport(errorMsg);
-                /* 처리완료 */
-                return;
-            }
-
-            /* 정상인 경우 메시지 전송 */
-            ByteBuffer sendBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + KakaoMessage.DELIVER_KAKAO_BODY_LENGTH);
-            ByteBuffer recvBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + KakaoMessage.DELIVER_KAKAO_ACK_BODY_LENGTH);
-            /* File check */
-            ByteBuffer fileBuffer = KakaoMessage.makeJsonForDeliver(path, data.getKakaoJsonFile());
-
-            Header.putHeader(sendBuffer, Header.COMMAND_DELIVER, KakaoMessage.DELIVER_KAKAO_BODY_LENGTH);
-            KakaoMessage.makeDataForDeliver(sendBuffer, data);
-            saveLog("[MESSAGE SEND] [... ...]");
-            saveLog("[MESSAGE DATA : " + data.toString() + "]");
-
-            ByteBuffer[] byteBuffers = new ByteBuffer[2];
-            byteBuffers[0] = sendBuffer;
-            byteBuffers[1] = fileBuffer;
-
-            socketChannel.write(byteBuffers);
             long MSG_SEND_TIME = System.currentTimeMillis();
             while (true) {
                 if (System.currentTimeMillis() - MSG_SEND_TIME >= Packet.LIMIT_PACKET_SEND_TIMEOUT) {
@@ -835,7 +642,9 @@
             saveLog("[MESSAGE SEND] [... ...]");
             saveLog("[MESSAGE DATA : " + data.toString() + "]");
 
-            socketChannel.write(sendBuffer);
+            while (sendBuffer.hasRemaining()) {
+                socketChannel.write(sendBuffer);
+            }
 
             /* 파일 전송 */
             ByteBuffer fileHeadBuffer = KakaoMessage.makeJsonHeaderForDeliver(path, data.getKakaoJsonFile());
@@ -849,82 +658,6 @@
 //                saveLog("bytesWritten : " + bytesWritten);
 //            }
 
-            long MSG_SEND_TIME = System.currentTimeMillis();
-            while (true) {
-                if (System.currentTimeMillis() - MSG_SEND_TIME >= Packet.LIMIT_PACKET_SEND_TIMEOUT) {
-                    saveLog("[messageSendTimeOut : Expired ... ... ... ... ... ... ...]");
-                    throw new Exception("messageSendTimeOut : Expired ... ... ... ... ... ... ...");
-                }
-                int recvCount = socketChannel.read(recvBuffer);
-                if (recvCount == -1) {
-                    saveLog("[MESSAGE SEND] [FAIL] [SOCKET IS CLOSED]");
-                    throw new Exception("DELIVER ERROR");
-                } else if (recvCount > 0) {
-                    setDeliverMsgId(data.getMsgId());
-//                    worker.updateToDeliver(data.getMsgId());
-                    saveLog("[MESSAGE SEND] [SUCCESS]");
-                    lastPacketSendTime = System.currentTimeMillis();
-                    break;
-                }
-            }
-        } catch (Exception e) {
-            saveSystemLog("ERROR [" + e.getMessage() + "]");
-            saveSystemLog("ERROR DETAIL");
-            saveSystemLog(e.toString());
-            throw new Exception(e);
-        }
-    }
-
-    private void kftMessageService_bak(MunjaonMsg data) throws Exception {
-        try {
-            /* 이미지 경로 디폴트 경로 사용 여부 */
-            String defaultYn = getProp("KAKAO", "DEFAULT_PATH_YN");
-            /* Kakao Json 저장 경로 */
-            String path = null;
-            if ("Y".equals(defaultYn)) {
-                path = System.getProperty("ROOTPATH") + File.separator + "kakaofile" + File.separator;
-            } else {
-                path = getProp("KAKAO", "FILEPATH") + File.separator;
-            }
-            /* 공통 메시지 유효성 체크 */
-            int checkCommonCode = MessageCheckUtil.validateMessageForCommon(data);
-            int checkMsgCode = MessageCheckUtil.validateMessageForKakao(data);
-            int checkFileCode = MessageCheckUtil.validateJsonFile(path, data.getKakaoJsonFile());
-            if (checkCommonCode != ErrorCode.OK.getCode() || checkMsgCode != ErrorCode.OK.getCode() || checkFileCode != ErrorCode.OK.getCode()) {
-                saveLog("[MESSAGE FILTER] [COMMON_CODE : " + checkCommonCode + "] [MSG_CODE : " + checkMsgCode + "] [JSON_FILE_CODE : " + checkFileCode + "]");
-                saveLog("[MESSAGE DATA : " + data.toString() + "]");
-                /* 전송처리 */
-                worker.updateToDeliver(data.getMsgId());
-                /* 실패처리 */
-                MunjaonMsg errorMsg = null;
-                if (checkCommonCode != ErrorCode.OK.getCode()) {
-                    errorMsg = MessageCheckUtil.setReportMessage(data.getMsgId(), "00", String.valueOf(checkCommonCode), MessageUtil.getTime(), "ETC");
-                }else if (checkMsgCode != ErrorCode.OK.getCode()) {
-                    errorMsg = MessageCheckUtil.setReportMessage(data.getMsgId(), "00", String.valueOf(checkMsgCode), MessageUtil.getTime(), "ETC");
-                } else {
-                    errorMsg = MessageCheckUtil.setReportMessage(data.getMsgId(), "00", String.valueOf(checkFileCode), MessageUtil.getTime(), "ETC");
-                }
-                worker.updateToReport(errorMsg);
-                /* 처리완료 */
-                return;
-            }
-
-            /* 정상인 경우 메시지 전송 */
-            ByteBuffer sendBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + KakaoMessage.DELIVER_KAKAO_BODY_LENGTH);
-            ByteBuffer recvBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + KakaoMessage.DELIVER_KAKAO_ACK_BODY_LENGTH);
-            /* File check */
-            ByteBuffer fileBuffer = KakaoMessage.makeJsonForDeliver(path, data.getKakaoJsonFile());
-
-            Header.putHeader(sendBuffer, Header.COMMAND_DELIVER, KakaoMessage.DELIVER_KAKAO_BODY_LENGTH);
-            KakaoMessage.makeDataForDeliver(sendBuffer, data);
-            saveLog("[MESSAGE SEND] [... ...]");
-            saveLog("[MESSAGE DATA : " + data.toString() + "]");
-
-            ByteBuffer[] byteBuffers = new ByteBuffer[2];
-            byteBuffers[0] = sendBuffer;
-            byteBuffers[1] = fileBuffer;
-
-            socketChannel.write(byteBuffers);
             long MSG_SEND_TIME = System.currentTimeMillis();
             while (true) {
                 if (System.currentTimeMillis() - MSG_SEND_TIME >= Packet.LIMIT_PACKET_SEND_TIMEOUT) {
Add a comment
List