这里我总结一下,分析源码主要的是要从宏观上去了解它的使用,而不是去读它的源码,应该更主要的是看它的doc文档说明,然后在结合着去看它的源码,这样才能从一个宏观的角度去解读它。
RepalyingEncode是bytemessagedecoder的一个特殊变化,继承了阻塞IO中的非阻塞解码器;
它俩最大的区别就是在实现decode()和decodeLast()方法之后不需要检查是否请求字节可行。
它是怎么做的呢
简单描述:当数据足够的时候,会执行后面的操作;如果数据不够的话会抛出错误异常
而且该错误异常都属于同一个对象。
对于ReplayingDecoder和ByteToMessageDecoder两个来说我们已经认识了,那MessageToMessageDecoder呢 ?
数据通过字节从网络进入到程序,解码成message,这个时候,从当前处理器到下一个处理器转换过程就是从message到message的过程,这个时候就要用到MessageToMessageDecoder这个类
查看 MessageToMessageDecoder源码
这样的话,我们可以在之前long类型处理之后的基础上加上该MessageToMessageDecoder处理器,这个消息最后传递到我们自定义处理器的时候就是string类型了。
然后将我们自定义处理器接收数据类型改为string类型
加入解码器
启动服务端、客户端:
MessageToMessageCodec既是解码器又是编码器
因为它既实现了出栈处理器又实现了入栈处理器