|
|
@@ -4,13 +4,10 @@ import com.evps.comm.server.entity.TbRegionCenterComm;
|
|
|
import com.evps.comm.server.process.dbms.DbmsData;
|
|
|
import com.evps.comm.server.process.dbms.DbmsDataProcess;
|
|
|
import com.evps.comm.server.repository.ApplicationRepository;
|
|
|
+import com.evps.comm.server.xnet.server.process.ProcessPacket;
|
|
|
import com.evps.comm.server.xnet.server.process.work.DataPacketProcess;
|
|
|
import com.evps.common.dto.EvpsCenter;
|
|
|
-import com.evps.common.protocol.EvpsCommPacket;
|
|
|
-import com.evps.common.protocol.eEvpsOpCode;
|
|
|
-import com.evps.common.protocol.response.RecvPacketDto;
|
|
|
import com.its.common.network.NettyUtils;
|
|
|
-import com.its.common.utils.ByteUtils;
|
|
|
import io.netty.buffer.ByteBuf;
|
|
|
import io.netty.channel.ChannelHandler;
|
|
|
import io.netty.channel.ChannelHandlerContext;
|
|
|
@@ -33,68 +30,9 @@ public class EvpsCommServerInboundMessageHandler extends SimpleChannelInboundHan
|
|
|
|
|
|
@Override
|
|
|
protected void channelRead0(ChannelHandlerContext ctx, ByteBuf byteBuf) throws Exception {
|
|
|
- final long recvTime = System.currentTimeMillis();
|
|
|
- EvpsCenter center = ApplicationRepository.getCenterObject(ctx.channel());
|
|
|
- if (center == null) {
|
|
|
- log.error("[{}]. RECV: Not Found Channel Center Object... Oops Will be closed.", NettyUtils.getAddress(ctx.channel()));
|
|
|
- ApplicationRepository.closeChannel(null, ctx.channel());
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- boolean isError = false;
|
|
|
|
|
|
- try {
|
|
|
- MDC.put("id", center.getLogKey());
|
|
|
-
|
|
|
- EvpsCommPacket evpsCommPacket = new EvpsCommPacket(center, byteBuf);
|
|
|
-
|
|
|
- if (center.isDump()) {
|
|
|
- log.info("[{}]. RECV: {} Bytes. {}\r\nService Id: {}. Time: {}. Head: {} Bytes. Body: {} Bytes. {}{}",
|
|
|
- center.getLogKey(), evpsCommPacket.getFrameLength(), eEvpsOpCode.getValue(evpsCommPacket.getOpCode()),
|
|
|
- evpsCommPacket.getServiceId(), evpsCommPacket.getCommDate(),
|
|
|
- evpsCommPacket.getHeadBuffer().length, evpsCommPacket.getBuffer().length,
|
|
|
- ByteUtils.byteArrayToHex(evpsCommPacket.getHeadBuffer()),
|
|
|
- ByteUtils.byteArrayToHex(evpsCommPacket.getBuffer()));
|
|
|
- }
|
|
|
- else {
|
|
|
- log.info("[{}]. RECV: {} Bytes. {}", center.getLogKey(), evpsCommPacket.getFrameLength(), eEvpsOpCode.getValue(evpsCommPacket.getOpCode()));
|
|
|
- }
|
|
|
+ ProcessPacket.processPacket(ctx, byteBuf, this.dataPacketProcess, this.dbmsDataProcess);
|
|
|
|
|
|
- if (!evpsCommPacket.isValid()) {
|
|
|
- log.error("[{}]. RECV: {} Bytes. Packet Validation Error: will be closed.", center.getIpAddress(), evpsCommPacket.getFrameLength());
|
|
|
- isError = true;
|
|
|
- }
|
|
|
- else {
|
|
|
- RecvPacketDto packet = RecvPacketDto.builder()
|
|
|
- .recvTime(recvTime)
|
|
|
- .center(center)
|
|
|
- .packet(evpsCommPacket)
|
|
|
- .build();
|
|
|
-
|
|
|
- center.getNetState().setLastRecvTime();
|
|
|
- this.dataPacketProcess.add(packet);
|
|
|
-
|
|
|
- TbRegionCenterComm stts = TbRegionCenterComm.builder()
|
|
|
- .centerId(center.getCenterId())
|
|
|
- .commState(TbRegionCenterComm.CENTER_COMM_LAST)
|
|
|
- .opCode(evpsCommPacket.getOpCode())
|
|
|
- .opCodeDesc(evpsCommPacket.getOpCodeDesc())
|
|
|
- .build();
|
|
|
- this.dbmsDataProcess.add(new DbmsData(DbmsData.DBMS_DATA_CENTER_STTS, center, stts));
|
|
|
- }
|
|
|
- }
|
|
|
- catch (Exception e) {
|
|
|
- log.error("[{}]. RECV: Exception Error: will be closed: {}.", center.getLogKey(), e.getMessage());
|
|
|
- isError = true;
|
|
|
- }
|
|
|
- finally {
|
|
|
- if (isError) {
|
|
|
- ApplicationRepository.closeChannel(center, ctx.channel());
|
|
|
- }
|
|
|
-
|
|
|
- MDC.remove(center.getLogKey());
|
|
|
- MDC.clear();
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
@Override
|