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