package com.dy.common.mw.channel.tcp; import org.apache.mina.core.service.IoHandlerAdapter; import org.apache.mina.core.session.IdleStatus; import org.apache.mina.core.session.IoSession; public class TcpIoHandler extends IoHandlerAdapter { private TcpUnitAdapter adapter ; private boolean stop = false ;//为true时,停止TCP服务,并把已经TCP连接断连接 public TcpIoHandler(TcpUnitAdapter adapter){ this.adapter = adapter ; } public void stop(){ stop = true ; } public void recover(){ this.stop = false ; } /** * 创建了会话 */ @Override public void sessionCreated(IoSession session) throws Exception { if(stop){ session.closeNow() ; }else{ super.sessionCreated(session); } } /** * 会话open时回调的方法 */ public void sessionOpened(IoSession session) throws Exception { if(stop){ session.closeNow() ; }else{ this.adapter.newSessionEventCallback().sessionOpened(session); } } /** * 会话空闲 */ @Override public void sessionIdle(IoSession session, IdleStatus status) throws Exception { super.sessionIdle(session, status); } /** * 输入关闭 */ @Override public void inputClosed(IoSession session) throws Exception { super.inputClosed(session); } /** * 网络关闭 */ @Override public void sessionClosed(IoSession session) throws Exception { this.adapter.newSessionEventCallback().sessionClosed(session); super.sessionClosed(session); } /** * 发生异常 */ @Override public void exceptionCaught(IoSession session, Throwable cause) throws Exception { this.adapter.newSessionEventCallback().exceptionCaught(session, cause); } /** * 消息发送了 */ @Override public void messageSent(IoSession session, Object message) throws Exception { super.messageSent(session, message); this.adapter.newSessionEventCallback().messageSended(session, message); } /** * 接收到数据后,回调的方法,进行数据处理 */ @Override public void messageReceived(IoSession session, Object message) throws Exception { if(stop){ session.closeNow() ; }else{ this.adapter.newSessionEventCallback().messageReceived(session, message); } } }