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