确定会话是否空闲并在使用Mina的解码器中刷新?

时间:2014-04-25 18:20:19

标签: java apache-camel apache-mina

我正在将Apache Camel与Apache Mina结合使用以获得TCP服务器。我在我的代码中使用特定的协议解码器。在这个解码器中,我等待在向下游发送到路由之前获得X个字节。

我想实现一些能够理解会话空闲或关闭然后将我们已经下游的字节发送到路由的东西(如果我们没有这样做,那就不重要了)得到总X字节)。我已经尝试实现IoFilterAdapter覆盖方法sessionIdle(),但我不确定如何使用它。

1 个答案:

答案 0 :(得分:1)

覆盖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");