我将Apache Camel与Apache Mina结合使用以拥有TCP Server。我在代码中使用了特定的协议解码器。在此解码器中,我等待获取X字节的字节,然后再将它们发送到路由的下游。
我想实现一些能够理解会话处于空闲或关闭状态,然后将已经向下游发送的字节发送到路由的东西(如果我们没有获得总的X字节则无所谓)。我已经尝试实现覆盖方法IoFilterAdapter
的sessionIdle()
,但是我不确定如何使用它。
最佳答案
覆盖sessionIdle()
方法基本上是用于在达到会话空闲时间后关闭(或根据需要配置)会话。
您可以通过覆盖IoFilterAdapter
方法在处理程序类中设置空闲时间(或通过扩展sessionOpened()
)。
像这样的事情应该做的工作:
@Override
public void sessionOpened(final IoSession session) throws Exception
{
session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, this.idleTimeOut);
}
您还可以使用在
IdleStatus
类中定义的其他空闲状态。基本上有状态:public static final IdleStatus READER_IDLE = new IdleStatus("reader idle");
public static final IdleStatus WRITER_IDLE = new IdleStatus("writer idle");
public static final IdleStatus BOTH_IDLE = new IdleStatus("both idle");