| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package com.tsi.comm.server.protocol;
- import com.tsi.comm.server.protocol.enums.eOpCode;
- import com.tsi.comm.server.vo.TsiNodeAddDetailVo;
- import com.tsi.comm.server.vo.TsiNodeAddVo;
- import com.tsi.comm.server.vo.TsiNodeVo;
- import com.tsi.comm.server.xnet.NettyUtils;
- import com.tsi.common.utils.ByteUtils;
- import com.tsi.common.utils.TimeUtils;
- import io.netty.channel.Channel;
- import lombok.Getter;
- import lombok.Setter;
- import static com.tsi.comm.server.protocol.TsiCvibProtocolSpec.*;
- @Getter
- @Setter
- public class TsiCpuDisconnected extends TsiCpuPacket {
- public TsiCpuDisconnected(long nodeId, Channel channel) {
- this(nodeId, TimeUtils.currentTimeSeconds(), System.nanoTime(), channel);
- }
- public TsiCpuDisconnected(long nodeId, long msec, long nsec, Channel channel) {
- super(nodeId, msec, nsec, NettyUtils.getRemoteIpAddressToLong(channel), NettyUtils.getRemotePort(channel));
- setOpCode(eOpCode.TSI_CPU_DISCONNECTED.getValue());
- }
- protected void makeAddNodeCvimPaket(TsiCpuPacket cpuPacket) {
- cpuPacket.cvimData = new byte[SIZE_IPC_SIZE]; // ipc head only
- // cvim-raw header
- System.arraycopy(this.timespec.bytes(), 0, cpuPacket.cvimData, POS_IPC_TIMESPEC, SIZE_TIMESPEC);
- ByteUtils.setUnsignedInt(cpuPacket.cvimData, POS_IPC_IPADDR, getRemoteIp());
- ByteUtils.setUnsignedShort(cpuPacket.cvimData, POS_IPC_PORT, getRemotePort());
- cpuPacket.cvimData[POS_IPC_CONNECT] = DISCONNECT;
- ByteUtils.setUnsignedInt(cpuPacket.cvimData, POS_IPC_NODEID, cpuPacket.nodeId);
- }
- public void parsing(TsiNodeVo nodeVo) {
- // nodeVo.getNodeId == this.nodeId
- if (nodeVo == null) {
- return;
- }
- TsiNodeAddVo tsiNodeAddVo = TsiCpuPacket.nodeAddManager.get(this.nodeId);
- if (tsiNodeAddVo == null) {
- // 연등지 정보가 없는 경우
- makeCvimPacket();
- return;
- }
- // 연등지 노드 카프카 패킷 생성
- for (Integer key : tsiNodeAddVo.getAddNodeMap().keySet()){
- TsiNodeAddDetailVo detailVo = tsiNodeAddVo.getAddNodeMap().get(key);
- TsiCpuAddPacket addPacket = new TsiCpuAddPacket(detailVo.getNodeId(), this.timespec, this.remoteIp, this.remotePort);
- makeAddNodeCvimPaket(addPacket);
- this.addNodes.add(addPacket);
- }
- }
- }
|