MMS, 카카오 알림톡, 친구톡 파일처리 로직 수정
This commit is contained in:
parent
b4d1a37cad
commit
a1f4496a83
@ -182,7 +182,7 @@ public class CollectServerTask extends Thread {
|
||||
return false;
|
||||
}
|
||||
|
||||
private void recvDeliver(SocketChannel channel, ByteBuffer headBuffer) throws IOException {
|
||||
private void recvDeliver(SocketChannel channel, ByteBuffer headBuffer) throws Exception {
|
||||
/* 서비스 중지여부 체크 */
|
||||
if (isExpireService()) {
|
||||
expireConnectUser();
|
||||
@ -254,7 +254,7 @@ public class CollectServerTask extends Thread {
|
||||
return messageDto;
|
||||
}
|
||||
|
||||
private void recvSmsDeliver(SocketChannel channel, ByteBuffer headBuffer) throws IOException {
|
||||
private void recvSmsDeliver(SocketChannel channel, ByteBuffer headBuffer) throws Exception {
|
||||
try {
|
||||
ByteBuffer bodyBuffer = ByteBuffer.allocate(SmsMessage.DELIVER_SMS_BODY_LENGTH);
|
||||
channel.read(bodyBuffer);
|
||||
@ -283,11 +283,12 @@ public class CollectServerTask extends Thread {
|
||||
connectUserDto.updateLastTrafficTime();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
saveLog(e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
private void recvLmsDeliver(SocketChannel channel, ByteBuffer headBuffer) throws IOException {
|
||||
private void recvLmsDeliver(SocketChannel channel, ByteBuffer headBuffer) throws Exception {
|
||||
try {
|
||||
ByteBuffer bodyBuffer = ByteBuffer.allocate(LmsMessage.DELIVER_LMS_BODY_LENGTH);
|
||||
channel.read(bodyBuffer);
|
||||
@ -316,11 +317,12 @@ public class CollectServerTask extends Thread {
|
||||
connectUserDto.updateLastTrafficTime();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
saveLog(e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
private void recvMmsDeliver(SocketChannel channel, ByteBuffer headBuffer) throws IOException {
|
||||
private void recvMmsDeliver(SocketChannel channel, ByteBuffer headBuffer) throws Exception {
|
||||
try {
|
||||
long MSG_RECV_TIME = System.currentTimeMillis(); // 메시지를 수신한 시간
|
||||
ByteBuffer bodyBuffer = ByteBuffer.allocate(MmsMessage.DELIVER_MMS_BODY_LENGTH);
|
||||
@ -370,7 +372,7 @@ public class CollectServerTask extends Thread {
|
||||
long IMAGE_RECV_TIME = System.currentTimeMillis(); // 이미지 패킷 처리 시작시간
|
||||
while (true) {
|
||||
int bufferSize = 1024;
|
||||
if (recvFileSize < fileSize) {
|
||||
if ((fileSize - recvFileSize) < 1024) {
|
||||
bufferSize = fileSize - recvFileSize;
|
||||
}
|
||||
|
||||
@ -384,15 +386,15 @@ public class CollectServerTask extends Thread {
|
||||
}
|
||||
|
||||
if (recvFileSize == fileSize) {
|
||||
if (saveFileCount == 0) {
|
||||
saveFileCount = saveFileCount + 1; // 수신한 파일 카운트 증가
|
||||
if (saveFileCount == 1) {
|
||||
messageDto.setUserFileName01(imagePath + File.separator + fileName);
|
||||
} else if (saveFileCount == 1) {
|
||||
messageDto.setUserFileName02(imagePath + File.separator + fileName);
|
||||
} else if (saveFileCount == 2) {
|
||||
messageDto.setUserFileName02(imagePath + File.separator + fileName);
|
||||
} else if (saveFileCount == 3) {
|
||||
messageDto.setUserFileName03(imagePath + File.separator + fileName);
|
||||
}
|
||||
JobFileFactory.saveFileForByteBuffer(imagePath, fileName, fileBuffer);
|
||||
saveFileCount++; // 수신한 파일 카운트 증가
|
||||
break;
|
||||
}
|
||||
|
||||
@ -402,40 +404,14 @@ public class CollectServerTask extends Thread {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// ByteBuffer fileBuffer = ByteBuffer.allocate(Integer.parseInt(fileSize));
|
||||
// channel.read(fileBuffer);
|
||||
// saveSystemLog("fileBuffer Last : " + fileBuffer.get(fileBuffer.capacity() - 1));
|
||||
// fileBuffer.flip();
|
||||
// JobFileFactory.saveFileForByteBuffer(imagePath, fileName, fileBuffer);
|
||||
// if (saveFileCount == 0) {
|
||||
// messageDto.setUserFileName01(imagePath + File.separator + fileName);
|
||||
// } else if (saveFileCount == 1) {
|
||||
// messageDto.setUserFileName02(imagePath + File.separator + fileName);
|
||||
// } else if (saveFileCount == 2) {
|
||||
// messageDto.setUserFileName03(imagePath + File.separator + fileName);
|
||||
// }
|
||||
// saveLog(printTaskLog() + "[MMS IMAGE] [File : " + fileName + ", Size : " + fileSize + "]");
|
||||
// saveFileCount++; // 수신한 파일 카운트 증가
|
||||
}
|
||||
|
||||
// for (int i = 0; i < recvFileCount; i++) {
|
||||
// ByteBuffer fileHeadBuffer = ByteBuffer.allocate(MmsMessage.DELIVER_MMS_FILENAME_LENGTH + MmsMessage.DELIVER_MMS_FILESIZE_LENGTH);
|
||||
// channel.read(fileHeadBuffer);
|
||||
// String fileName = MmsMessage.getFileNameForDeliver(fileHeadBuffer);
|
||||
// String fileSize = MmsMessage.getFileSizeForDeliver(fileHeadBuffer);
|
||||
// ByteBuffer fileBuffer = ByteBuffer.allocate(Integer.parseInt(fileSize));
|
||||
// channel.read(fileBuffer);
|
||||
// fileBuffer.flip();
|
||||
// JobFileFactory.saveFileForByteBuffer(imagePath, fileName, fileBuffer);
|
||||
// if (i == 0) {
|
||||
// messageDto.setUserFileName01(imagePath + File.separator + fileName);
|
||||
// } else if (i == 1) {
|
||||
// messageDto.setUserFileName02(imagePath + File.separator + fileName);
|
||||
// } else if (i == 2) {
|
||||
// messageDto.setUserFileName03(imagePath + File.separator + fileName);
|
||||
// }
|
||||
// saveLog(printTaskLog() + "[MMS IMAGE] [File : " + fileName + ", Size : " + fileSize + "]");
|
||||
// }
|
||||
/* 이미지를 모두 수신하지 못한 경우 */
|
||||
if (recvFileCount == 0 || (recvFileCount != saveFileCount)) {
|
||||
saveLog(printTaskLog() + "[MMS File Count : " + recvFileCount + " | saveFileCount : " + saveFileCount + "]");
|
||||
expireConnectUser();
|
||||
return;
|
||||
}
|
||||
|
||||
/* 사용자 단가, 발송망 설정 */
|
||||
MemberDto savedMemberDto = null;
|
||||
@ -463,11 +439,94 @@ public class CollectServerTask extends Thread {
|
||||
connectUserDto.updateLastTrafficTime();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
saveLog(e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
private void recvKatDeliver(SocketChannel channel, ByteBuffer headBuffer) throws IOException {
|
||||
private void recvKatDeliver(SocketChannel channel, ByteBuffer headBuffer) throws Exception {
|
||||
try {
|
||||
ByteBuffer bodyBuffer = ByteBuffer.allocate(KakaoMessage.DELIVER_KAKAO_BODY_LENGTH);
|
||||
channel.read(bodyBuffer);
|
||||
ByteBuffer deliverBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + KakaoMessage.DELIVER_KAKAO_BODY_LENGTH);
|
||||
Packet.mergeBuffers(deliverBuffer, headBuffer, bodyBuffer);
|
||||
|
||||
BasicMessageDto messageDto = recvCommonMessage(deliverBuffer);
|
||||
messageDto.setUserSubject(KakaoMessage.getSubjectForDeliver(deliverBuffer));
|
||||
messageDto.setUserMessage(KakaoMessage.getMessageForDeliver(deliverBuffer));
|
||||
messageDto.setKakaoSenderKey(KakaoMessage.getKakaoSenderKeyForDeliver(deliverBuffer));
|
||||
messageDto.setKakaoTemplateCode(KakaoMessage.getKakaoTemplateCodeForDeliver(deliverBuffer));
|
||||
|
||||
String jsonPath = System.getProperty("ROOTPATH") + File.separator + "kakaofile";
|
||||
jsonPath = jsonPath + File.separator + MessageUtil.getDate() + File.separator + SerialNoUtil.getSerialNo();
|
||||
FileUtil.mkdirs(jsonPath);
|
||||
|
||||
ByteBuffer fileHeadBuffer = ByteBuffer.allocate(KakaoMessage.DELIVER_JSON_FILENAME_LENGTH + KakaoMessage.DELIVER_JSON_FILESIZE_LENGTH);
|
||||
channel.read(fileHeadBuffer);
|
||||
|
||||
String fileName = KakaoMessage.getFileNameForDeliver(fileHeadBuffer);
|
||||
int fileSize = Integer.parseInt(KakaoMessage.getFileSizeForDeliver(fileHeadBuffer));
|
||||
|
||||
ByteBuffer fileBuffer = ByteBuffer.allocate(fileSize);
|
||||
/* 파일 수신 */
|
||||
int recvFileSize = 0;
|
||||
long IMAGE_RECV_TIME = System.currentTimeMillis(); // 파일 패킷 처리 시작시간
|
||||
while (true) {
|
||||
int bufferSize = 1024;
|
||||
if ((fileSize - recvFileSize) < 1024) {
|
||||
bufferSize = fileSize - recvFileSize;
|
||||
}
|
||||
|
||||
ByteBuffer buffer = ByteBuffer.allocate(bufferSize);
|
||||
int unitRecvCnt = channel.read(buffer);
|
||||
if (unitRecvCnt > 0) {
|
||||
Packet.mergeBuffers(fileBuffer, buffer, recvFileSize);
|
||||
recvFileSize += unitRecvCnt;
|
||||
saveLog("unitRecvCnt : " + unitRecvCnt);
|
||||
saveLog("recvFileSize : " + recvFileSize);
|
||||
}
|
||||
|
||||
if (recvFileSize == fileSize) {
|
||||
JobFileFactory.saveFileForByteBuffer(jsonPath, fileName, fileBuffer);
|
||||
messageDto.setKakaoJsonFile(jsonPath + File.separator + fileName);
|
||||
saveLog(printTaskLog() + "[KAT JSON] [File : " + fileName + ", Size : " + fileSize + "]");
|
||||
break;
|
||||
}
|
||||
|
||||
if (System.currentTimeMillis() - IMAGE_RECV_TIME > 3000) {
|
||||
/* MMS 이미지 파일 수신 timeout */
|
||||
saveLog(printTaskLog() + "[KAKAO File : " + fileName + " : Expired ... ... ... ... ... ... ...]");
|
||||
expireConnectUser();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* 사용자 단가, 발송망 설정 */
|
||||
MemberDto savedMemberDto = null;
|
||||
if (this.connectUserDto != null) {
|
||||
savedMemberDto = this.connectUserDto.getMemberDto();
|
||||
}
|
||||
if (savedMemberDto != null) {
|
||||
messageDto.setRouterSeq(savedMemberDto.getKakaoAtAgentCode());
|
||||
messageDto.setUnitCost(String.valueOf(savedMemberDto.getKakaoAtPrice()));
|
||||
}
|
||||
|
||||
saveLog(printTaskLog() + "[MESSAGE : " + messageDto.toString() + "]");
|
||||
QueueTypeWorker worker = QueueTypeWorker.find("KAT");
|
||||
if (worker != null) {
|
||||
worker.pushQueue(messageDto);
|
||||
channel.write(KakaoMessage.makeDeliverAckBuffer(messageDto.getUserMsgID(), messageDto.getSendStatus()));
|
||||
connectUserDto.updateLastTrafficTime();
|
||||
} else {
|
||||
saveSystemLog("worker is null");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
saveLog(e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
private void recvKatDeliver_bak(SocketChannel channel, ByteBuffer headBuffer) throws IOException {
|
||||
try {
|
||||
ByteBuffer bodyBuffer = ByteBuffer.allocate(KakaoMessage.DELIVER_KAKAO_BODY_LENGTH);
|
||||
channel.read(bodyBuffer);
|
||||
@ -522,7 +581,87 @@ public class CollectServerTask extends Thread {
|
||||
}
|
||||
}
|
||||
|
||||
private void recvKftDeliver(SocketChannel channel, ByteBuffer headBuffer) throws IOException {
|
||||
private void recvKftDeliver(SocketChannel channel, ByteBuffer headBuffer) throws Exception {
|
||||
try {
|
||||
ByteBuffer bodyBuffer = ByteBuffer.allocate(KakaoMessage.DELIVER_KAKAO_BODY_LENGTH);
|
||||
channel.read(bodyBuffer);
|
||||
ByteBuffer deliverBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + KakaoMessage.DELIVER_KAKAO_BODY_LENGTH);
|
||||
Packet.mergeBuffers(deliverBuffer, headBuffer, bodyBuffer);
|
||||
|
||||
BasicMessageDto messageDto = recvCommonMessage(deliverBuffer);
|
||||
messageDto.setUserSubject(KakaoMessage.getSubjectForDeliver(deliverBuffer));
|
||||
messageDto.setUserMessage(KakaoMessage.getMessageForDeliver(deliverBuffer));
|
||||
messageDto.setKakaoSenderKey(KakaoMessage.getKakaoSenderKeyForDeliver(deliverBuffer));
|
||||
messageDto.setKakaoTemplateCode(KakaoMessage.getKakaoTemplateCodeForDeliver(deliverBuffer));
|
||||
|
||||
String jsonPath = System.getProperty("ROOTPATH") + File.separator + "kakaofile";
|
||||
jsonPath = jsonPath + File.separator + MessageUtil.getDate() + File.separator + SerialNoUtil.getSerialNo();
|
||||
FileUtil.mkdirs(jsonPath);
|
||||
|
||||
ByteBuffer fileHeadBuffer = ByteBuffer.allocate(KakaoMessage.DELIVER_JSON_FILENAME_LENGTH + KakaoMessage.DELIVER_JSON_FILESIZE_LENGTH);
|
||||
channel.read(fileHeadBuffer);
|
||||
|
||||
String fileName = KakaoMessage.getFileNameForDeliver(fileHeadBuffer);
|
||||
int fileSize = Integer.parseInt(KakaoMessage.getFileSizeForDeliver(fileHeadBuffer));
|
||||
|
||||
ByteBuffer fileBuffer = ByteBuffer.allocate(fileSize);
|
||||
/* 파일 수신 */
|
||||
int recvFileSize = 0;
|
||||
long IMAGE_RECV_TIME = System.currentTimeMillis(); // 파일 패킷 처리 시작시간
|
||||
while (true) {
|
||||
int bufferSize = 1024;
|
||||
if ((fileSize - recvFileSize) < 1024) {
|
||||
bufferSize = fileSize - recvFileSize;
|
||||
}
|
||||
|
||||
ByteBuffer buffer = ByteBuffer.allocate(bufferSize);
|
||||
int unitRecvCnt = channel.read(buffer);
|
||||
if (unitRecvCnt > 0) {
|
||||
Packet.mergeBuffers(fileBuffer, buffer, recvFileSize);
|
||||
recvFileSize += unitRecvCnt;
|
||||
saveLog("unitRecvCnt : " + unitRecvCnt);
|
||||
saveLog("recvFileSize : " + recvFileSize);
|
||||
}
|
||||
|
||||
if (recvFileSize == fileSize) {
|
||||
JobFileFactory.saveFileForByteBuffer(jsonPath, fileName, fileBuffer);
|
||||
messageDto.setKakaoJsonFile(jsonPath + File.separator + fileName);
|
||||
saveLog(printTaskLog() + "[KAT JSON] [File : " + fileName + ", Size : " + fileSize + "]");
|
||||
break;
|
||||
}
|
||||
|
||||
if (System.currentTimeMillis() - IMAGE_RECV_TIME > 3000) {
|
||||
/* MMS 이미지 파일 수신 timeout */
|
||||
saveLog(printTaskLog() + "[KAKAO File : " + fileName + " : Expired ... ... ... ... ... ... ...]");
|
||||
expireConnectUser();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* 사용자 단가, 발송망 설정 */
|
||||
MemberDto savedMemberDto = null;
|
||||
if (this.connectUserDto != null) {
|
||||
savedMemberDto = this.connectUserDto.getMemberDto();
|
||||
}
|
||||
if (savedMemberDto != null) {
|
||||
messageDto.setRouterSeq(savedMemberDto.getKakaoFtAgentCode());
|
||||
messageDto.setUnitCost(String.valueOf(savedMemberDto.getKakaoFtPrice()));
|
||||
}
|
||||
|
||||
saveLog(printTaskLog() + "[MESSAGE : " + messageDto.toString() + "]");
|
||||
QueueTypeWorker worker = QueueTypeWorker.find("KFT");
|
||||
if (worker != null) {
|
||||
worker.pushQueue(messageDto);
|
||||
channel.write(KakaoMessage.makeDeliverAckBuffer(messageDto.getUserMsgID(), messageDto.getSendStatus()));
|
||||
connectUserDto.updateLastTrafficTime();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
saveLog(e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
private void recvKftDeliver_bak(SocketChannel channel, ByteBuffer headBuffer) throws IOException {
|
||||
try {
|
||||
ByteBuffer bodyBuffer = ByteBuffer.allocate(KakaoMessage.DELIVER_KAKAO_BODY_LENGTH);
|
||||
channel.read(bodyBuffer);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user