Mina学习之IoFilter

时间:2023-03-08 22:20:55

IoFilter 是MINA中的一个核心结构,扮演了非常重要的角色。IoFilter在IoService和IoHandler过滤了所有的I/O 事件和请求。如果你有做个web项目的经验,则很类似于web中的

filter。为了加快开发效率,Mina提供了很多的filter,例如:

1. LoggingFilter: 记录下所有事件和请求的日志

2. ProtocolCodeFilter:将字节流转换成业务对象。

3. CompressionFilter:压缩所有的数据

4. SSLFilter

这里,我们将展示如何在一个例子中实现IoFilter, 实现IoFilter接口会很容易,但我们需要知道些Mina内部的细节。

1. Filters alreay present

当前已有很多写好的filters,下图展示了这些已存在的Filter以及一些简单的说明(想查看各个filter更详细的信息,上官网:http://mina.apache.org/mina-project/userguide/ch5-filters/ch5-filters.html)

Mina学习之IoFilter

Overriding Events Selectively

我们可以通过继承IoAdapter 来替代直接实现IoFilter接口,任何收到的事件在一个fiter处理完之后直接交由下一个filter处理。

public class MyFilter extends IoFilterAdapter {
@Override
public void sessionOpened(NextFilter nextFilter, IoSession session) throws Exception {
// Some logic here...
nextFilter.sessionOpened(session);
// Some other logic here...
}
}