New file |
| | |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | } |