1078-修复分包消息处理
This commit is contained in:
@@ -82,4 +82,13 @@ public class MultiPacket {
|
|||||||
public void setByteBuf(ByteBuf byteBuf) {
|
public void setByteBuf(ByteBuf byteBuf) {
|
||||||
this.byteBuf = byteBuf;
|
this.byteBuf = byteBuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "MultiPacket{" +
|
||||||
|
"消息头=" + header +
|
||||||
|
", 包序号=" + number +
|
||||||
|
", 分包数量=" + count +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ public enum MultiPacketManager {
|
|||||||
* 增加待合并的分包,如果分包接受完毕会返回完整的数据包
|
* 增加待合并的分包,如果分包接受完毕会返回完整的数据包
|
||||||
*/
|
*/
|
||||||
public ByteBuf add(MultiPacket packet) {
|
public ByteBuf add(MultiPacket packet) {
|
||||||
String key = packet.getHeader().getTerminalId() + "/" + packet.getHeader().getSn();
|
String key = packet.getHeader().getMsgId() + "/" + packet.getHeader().getTerminalId();
|
||||||
|
logger.debug("分包消息: \n{}", packet);
|
||||||
List<MultiPacket> multiPackets = packetMap.computeIfAbsent(key, k -> new ArrayList<>(packet.getCount()));
|
List<MultiPacket> multiPackets = packetMap.computeIfAbsent(key, k -> new ArrayList<>(packet.getCount()));
|
||||||
multiPackets.add(packet);
|
multiPackets.add(packet);
|
||||||
packetTimeMap.put(key, System.currentTimeMillis());
|
packetTimeMap.put(key, System.currentTimeMillis());
|
||||||
|
|||||||
@@ -74,4 +74,14 @@ public class Header {
|
|||||||
return Bin.get(msgPro, 14);
|
return Bin.get(msgPro, 14);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Header{" +
|
||||||
|
"消息ID='" + msgId + '\'' +
|
||||||
|
", 消息体属性=" + msgPro +
|
||||||
|
", 终端手机号='" + terminalId + '\'' +
|
||||||
|
", 消息体流水号=" + sn +
|
||||||
|
", 协议版本号=" + version +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import org.springframework.context.ApplicationEvent;
|
|||||||
|
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -35,6 +36,12 @@ public class J0802 extends Re {
|
|||||||
protected Rs decode0(ByteBuf buf, Header header, Session session) {
|
protected Rs decode0(ByteBuf buf, Header header, Session session) {
|
||||||
respNo = buf.readUnsignedShort();
|
respNo = buf.readUnsignedShort();
|
||||||
int length = buf.readUnsignedShort();
|
int length = buf.readUnsignedShort();
|
||||||
|
if (length == 0) {
|
||||||
|
log.info("[JT-存储多媒体数据检索应答]: {}", length);
|
||||||
|
SessionManager.INSTANCE.response(header.getTerminalId(), "0802", (long) respNo, new ArrayList<>());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
mediaDataInfoList = new ArrayList<>(length);
|
||||||
for (int i = 0; i < length; i++) {
|
for (int i = 0; i < length; i++) {
|
||||||
mediaDataInfoList.add(JTMediaDataInfo.decode(buf));
|
mediaDataInfoList.add(JTMediaDataInfo.decode(buf));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user