本文主要是介绍Netty源码解析9-ChannelHandler实例之MessageToByteEncoder,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
MessageToByteEncoder框架可见用户使用POJO对象编码为字节数据存储到ByteBuf。用户只需定义自己的编码方法encode()即可。
首先看类签名:
public abstract class MessageToByteEncoder<I> extends ChannelOutboundHandlerAdapter
可知该类只处理出站事件,切确的说是write事件。
该类有两个成员变量,preferDirect表示是否使用内核的DirectedByteBuf,默认为true。TypeParameterMatcher用于检测泛型参数是否是期待的类型,比如说,如果需要编码String类的POJO对象,Matcher会确保write()传入的参数Object的实际切确类型为String。
直接分析write()的处理:
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {ByteBuf buf = null;try {if (acceptOutboundMessage(msg)) {I cast = (I) ms
这篇关于Netty源码解析9-ChannelHandler实例之MessageToByteEncoder的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!