zhubaomin
2025-04-17 b63eef2cfb054b1ead234ab93e05a2aa28775d91
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpIoHandler.java
New file
@@ -0,0 +1,103 @@
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);
      }
    }
}