| package com.zy.core.netty.handle; | 
|   | 
| import com.zy.core.netty.domain.ChPackage; | 
| import com.zy.core.netty.properties.TcpProperties; | 
| import io.netty.buffer.ByteBuf; | 
| import io.netty.channel.ChannelHandler; | 
| import io.netty.channel.ChannelHandlerContext; | 
| import io.netty.handler.codec.MessageToByteEncoder; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Component; | 
|   | 
| /** | 
|  * 国标编码器 | 
|  * 此解码器将会生成校验码 | 
|  * 处理方式: 异或和 | 
|  * Created by vincent on 2019-04-02 | 
|  */ | 
| @Slf4j | 
| @Component | 
| @ChannelHandler.Sharable | 
| public class ProtocolEncoder extends MessageToByteEncoder<Object> { | 
|   | 
|     @Autowired | 
|     private TcpProperties tcpProperties; | 
|   | 
|     @Override | 
|     protected void encode(ChannelHandlerContext ctx, Object obj, ByteBuf out) { | 
|         boolean upgradeLog = true; | 
|         if (obj instanceof ByteBuf){ | 
|             out.writeBytes((ByteBuf) obj); | 
|         } else if (obj instanceof byte[]) { | 
|             out.writeBytes((byte[]) obj); | 
|         } else if (obj instanceof ChPackage) { | 
|   | 
|         } | 
| //        if (tcpProperties.isPrintPacLog() || upgradeLog){ | 
| //            log.info("uuid={} 下行 >>> {}", getVin(out), ByteBufUtil.hexDump(out)); | 
| //        } | 
|   | 
|     } | 
|   | 
| //    private String getVin(ByteBuf byteBuf){ | 
| //        byte[] bytes = new byte[PackagePart.UNIQUENO.getLen()]; | 
| //        byteBuf.markReaderIndex(); | 
| //        byteBuf.readerIndex(PackagePart.UNIQUENO.getStartIndex()); | 
| //        byteBuf.readBytes(bytes); | 
| //        byteBuf.resetReaderIndex(); | 
| //        return RadixTools.bytesToStr(bytes); | 
| //    } | 
| } |