IoFilter是NIMA框架核心组员之一,扮演者重要角色。它过滤所有IoService和IoHandler之间的I/O事件和请求。
一些典型且经常使用的过滤器:
- LoggingFilter 记录所有事件和请求。
- ProtocolCodecFilter 将传入消息ByteBuffer POJO,反之亦然。
- CompressionFilter 压缩数据。
- SSLFilter 添加SSL - TLS - StartTLS支持。
已经实现的Filter接口:
| Filter | class | Description |
|---|---|---|
| Blacklist | BlacklistFilter | Blocks connections from blacklisted remote addresses |
| Buffered Write | BufferedWriteFilter | Buffers outgoing requests like the BufferedOutputStream does |
| Compression | CompressionFilter | |
| ConnectionThrottle | ConnectionThrottleFilter | |
| ErrorGenerating | ErrorGeneratingFilter | |
| Executor | ExecutorFilter | |
| FileRegionWrite | FileRegionWriteFilter | |
| KeepAlive | KeepAliveFilter | |
| Logging | LoggingFilter | Logs event messages, like MessageReceived, MessageSent, SessionOpened, ... |
| MDC Injection | MdcInjectionFilter | Inject key IoSession properties into the MDC |
| Noop | NoopFilter | A filter that does nothing. Useful for tests. |
| Profiler | ProfilerTimerFilter | Profile event messages, like MessageReceived, MessageSent, SessionOpened, ... |
| ProtocolCodec | ProtocolCodecFilter | A filter in charge of encoding and decoding messages |
| Proxy | ProxyFilter | |
| Reference counting | ReferenceCountingFilter | Keeps track of the number of usages of this filter |
| RequestResponse | RequestResponseFilter | |
| SessionAttributeInitializing | SessionAttributeInitializingFilter | |
| StreamWrite | StreamWriteFilter | |
| SslFilter | SslFilter | |
| WriteRequest | WriteRequestFilter |
重载事件:
通过实现IoFilter IoAdapter直接替换已有的事件实现,
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... } }