MyByteToLongDecoder

package com.atguigu.netty.inboundhandlerandoutboundhandler;

import com.atguigu.netty.simple.NettyClientHandler;
/**
*decode会根据接收的数据,被调用多次,
* 直到确定没有新的元素被添加到list或者是
* ByteBuf 没有更多的可读字节为止
* 如果list out 不为空,就会将list的内容传递给下一个
* Chan ne lin bo u ndh andler处理
* ,该处理器的方法也会被调用多次
* @param // ctx 上下文对象
*@param
* @param!in 入站的 ByteBuf
* @param // out List 集合,将解码后的数据传给下-个handle
* r@throws Exception
*
*
*
* */
public class MyByteToLongDecoder extends ByteToMessageDecoder{
private Object ch;
private Object ChannelHandlerContext;
private NettyClientHandler.ByteBuf in;
//编码方法

protected <ChannelPipeline> void encode
(NettyClientHandler.ChannelHandlerContext ctx, Long msg,
NettyClientHandler.ByteBuf out)
throws Exception{
ChannelPipeline pipeline =null;
//重写channelActive 发送数据
final Object channelHandlerContext = ChannelHandlerContext;
System.out.println("MyClientHandler 发送数据");
System.out.println("MyByteToLongDecoder 被调用");
//因为 long 8个字节,需要判断有8个字节,才能读取一个long
if(in.readableBytes()>=8){
out.add(in.readLong());
}





}
}
posted @ 2024-02-04 05:36  shenqiqingyu  阅读(4)  评论(0)    收藏  举报