西安大型网站建设,制作app怎么制作,讷河市铁道北建设高架桥,河北建设工程信息网招标公告唐县水利局ChannelPipeline 基于Netty的网路应用程序中根据业务需求会使用Netty已经提供的Channelhandler 或者自行开发ChannelHandler#xff0c;这些ChannelHandler都放在ChannelPipeline中统一 管理#xff0c;事件就会在ChannelPipeline中流动#xff0c;并被其中一个或者多个Chan…ChannelPipeline 基于Netty的网路应用程序中根据业务需求会使用Netty已经提供的Channelhandler 或者自行开发ChannelHandler这些ChannelHandler都放在ChannelPipeline中统一 管理事件就会在ChannelPipeline中流动并被其中一个或者多个ChannelHandler处理 ChannelPipeline提供了ChannelHandler链的容器并定义了在该链上传播入站(也就是从网络到业务处理) 和出站(也就是从业务处理到网络)各种事件流的API代码中的ChannelHandler都是放在ChannelPipeline中的。 使得事件流经ChannelPipeline是ChannelHandler的工作它们是在应用程序的初始化或者引导阶段被安装的。 这些ChannelHandler对象接收事件、执行它们所实现的处理逻辑并将数据传递给链中的下一个ChannelHandler, 而且Channelhandler对象也完全可以拦截事件不让事件继续传递。它们的执行顺序是由它们被添加的顺序所决定的。 ChannelPipeline上的方法。 既然ChannelPipeline以双向链表的形式进行维护管理Handler自然也提供了对应的方法在ChannelPipeline中 增加或者删除、替换handler. addFist、addBefore、addAfter、addLast将一个ChannelHandler添加到ChannelPipeline中。 remove将一个ChannelHandler从ChannelPipeline中移除 replace将ChannelPipeline中的一个ChannelHandler替换为另一个ChannelHandler get通过类型或者名称返回ChannelHandler context返回和ChannelHandler绑定的ChannelHandlerContext names返回ChannelPipeline中所有ChannelHandler的名称 ChannelPipeline的API公开了用于调用入站和出站操作的附加方法
ChannelHandler ChannelPipeline中的ChannelHandler. 入站和出站ChannelHandler被安装到同一个ChannelPipeline中ChannelPipeline以双向链表的形式进行维护管理。如上图在网络上传递的数据要求加密但是加密后密文比较大需要压缩后再传输而且按照业务要求需要检查报文中携带的用户信息是否合法于是图中实现了解压(入)Handler、压缩(出)Handler、解密(入)Handler、加密(出)Handler 授权(入)Handler.如果一个消息或者任何其他入站事件被读取那么它会从ChannelPipeline的头部开始流动但是只被处理入站事件的Handler处理也就是解压(入)Handler、解密(入)Handler、授权(入)Handler最终数据将会到达ChannelPipeline的尾端届时所有的处理就都结束了数据的出站运动(即正在被写的数据)在概念上也是一样的。在这种情况下数据将从链的尾端开始流动但是制备处理出站的Handler处理也就是加密(出)Handler、压缩(出)Handler直到它到达链的头部为止。在这之后出站数据将会到达网络传输层也就是Socket Handler可以放在解压(入)Handler和解密(入)Handler中间也可以放在解密(入)Handler和授权之间 而同属一个方向的Handler则是有顺序的因为上一个Handler处理的结果往往是下一个Handler的要求的输入。比如入站处理对于收到的数据只有先解压才能得到密文才能解密只有解密后才能拿到明文中的用户信息进行授权检查所以解压-解密-授权这个三个入站Handler的顺序就不能乱