ChannelHandlerContext调用链(HeadContext、TailContext也是ChannelHandlerContext,ChannelHandlerContext内部维护了next和prev):
入站:DefaultChannelPipelineHeadContext(内部无handler引用)−−>DefaultChannelHandlerContext(TestServerInitializer(ChannelInitializer也是handler))−−>DefaultChannelHandlerContext(HttpServerCodec)−−>DefaultChannelHandlerContext(TestHttpServerHandler)−−>DefaultChannelPipelineHeadContext(内部无handler引用)-->DefaultChannelHandlerContext(TestServerInitializer(ChannelInitializer也是handler))-->DefaultChannelHandlerContext(HttpServerCodec)
-->DefaultChannelHandlerContext(TestHttpServerHandler)-->DefaultChannelPipelineHeadContext(内部无handler引用)−−>DefaultChannelHandlerContext(TestServerInitializer(ChannelInitializer也是handler))−−>DefaultChannelHandlerContext(HttpServerCodec)−−>DefaultChannelHandlerContext(TestHttpServerHandler)−−>DefaultChannelPipelineTailContext(内部无handler引用)–>next为null,调用完毕
出站:DefaultChannelPipelineTailContext(内部无handler引用)−−>DefaultChannelHandlerContext(TestHttpServerHandler),TestHttpServerHandler为入站处理器,跳过−−>DefaultChannelHandlerContext(HttpServerCodec)−−>DefaultChannelHandlerContext(TestServerInitializer(ChannelInitializer也是handler)),该初始化处理器为入站处理器,跳过−−>DefaultChannelPipelineTailContext(内部无handler引用)-->DefaultChannelHandlerContext(TestHttpServerHandler),TestHttpServerHandler为入站处理器,跳过-->DefaultChannelHandlerContext(HttpServerCodec)
-->DefaultChannelHandlerContext(TestServerInitializer(ChannelInitializer也是handler)),该初始化处理器为入站处理器,跳过-->DefaultChannelPipelineTailContext(内部无handler引用)−−>DefaultChannelHandlerContext(TestHttpServerHandler),TestHttpServerHandler为入站处理器,跳过−−>DefaultChannelHandlerContext(HttpServerCodec)−−>DefaultChannelHandlerContext(TestServerInitializer(ChannelInitializer也是handler)),该初始化处理器为入站处理器,跳过−−>DefaultChannelPipelineHeadContext(内部无handler引用)
–>prev为null,调用完毕
netty的handler调用链机制
最新推荐文章于 2024-04-24 10:00:00 发布
924

被折叠的 条评论
为什么被折叠?



