Mina源码分析:为何过滤器源码中没有对下一个过滤器为null的处理
来源:互联网 发布:骨维力的副作用 知乎 编辑:程序博客网 时间:2024/04/29 06:23
Mina源码分析:为何过滤器源码中没有对下一个过滤器为null的处理
作者:ococo 2010.5.11.
为什么过滤器代码中都没有对下一个过滤器为null时的处理?例如:LoggingFilter中的代码
@Override public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception { log(messageReceivedLevel, "RECEIVED: {}", message ); nextFilter.messageReceived(session, message);//why? if(nextFilter!=null) nextFilter.messageReceived(session, message); }
答案:
Mina在FilterChain中增加了头过滤器和尾过滤器。即使用户用getFilterChain().addLast()添加过滤器到集合的尾部,但并不是插入到过滤器链的尾部。其实getFilterChain()返回的并不是FilterChain,而是FilterChainBuilder。在buildFilterChain()时,添加了内置的头和尾过滤器。也就是用户的过滤器保证是在链表的中部。自然也就不用考虑头尾的特殊情况。
当然这个头尾过滤器并不是仅仅为了让用户省掉null才添加的。而是另有用途,尾部过滤器除了有计数功能外,也担当着调用handler的messageReceived()的重任。
- Mina源码分析:为何过滤器源码中没有对下一个过滤器为null的处理
- MINA源码分析---处理时间分析过滤器
- MINA源码分析---对客户端设置连接间隔时间的过滤器
- MINA源码分析----日志过滤器 LoggingFilter
- MINA源码分析---心跳包过滤器KeepAliveFilter
- MINA源码分析---ExecutorFilter线程池过滤器
- mina源码阅读之过滤器
- MINA源码分析---协议编码解码过滤器ProtocolCodecFilter
- gzip过滤器源码分析
- Golang中gzip过滤器的源码分析与解释
- 源码过滤器
- 深入解析Apache Mina源码(1)——Mina的过滤器机制实现
- spring security 源码分析: 过滤器
- Elasticsearch源码分析十二--过滤器
- MINA源码分析---学习mina中整数和网络字节的转换处理
- OSChina 的全局过滤器源码
- okhttp源码分析(二)-RetryAndFollowUpInterceptor过滤器
- 源码深度解析spring中防止乱码的过滤器
- IQ测试
- 如何获得sqlserver数据库中占用高cpu用户的活动内容
- GridView导出Execl时报错RegisterForEventValidation的错误提示
- C#注册dll,成功不提示
- c++ 关于异常事件的处理 try catch throw
- Mina源码分析:为何过滤器源码中没有对下一个过滤器为null的处理
- android中捕获组合键
- junit4入门
- 架构分析网站
- 流合并 和流解析
- DataGridView的一些技巧
- 怎样将checkboxlist中的数据存到数据库并读出来
- 快速成长
- DAO测试策略(spring, hibernate)