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); 
 | 
//    } 
 | 
} 
 |