| New file | 
 |  |  | 
 |  |  | package com.dy.rtuMw.server.forTcp; | 
 |  |  |  | 
 |  |  | import org.apache.logging.log4j.LogManager; | 
 |  |  | import org.apache.logging.log4j.Logger; | 
 |  |  | import org.apache.mina.core.session.IoSession; | 
 |  |  |  | 
 |  |  | import com.dy.common.mw.channel.tcp.TcpIoSessionAttrIdIsRtuAddr; | 
 |  |  | import com.dy.common.mw.channel.tcp.TcpIoSessionEventCallback; | 
 |  |  | import com.dy.common.mw.core.CoreUnit; | 
 |  |  | import com.dy.rtuMw.server.tasks.RtuUpTask; | 
 |  |  |  | 
 |  |  | public class TcpIoSessionCallback implements TcpIoSessionEventCallback{ | 
 |  |  |  | 
 |  |  |    private static Logger log = LogManager.getLogger(TcpIoSessionCallback.class.getName()); | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 网络连接打开 | 
 |  |  |      */ | 
 |  |  |    public void sessionOpened(IoSession session) throws Exception { | 
 |  |  |        log.info("网络连接建立,终端网址是:" + session.getRemoteAddress().toString()) ; | 
 |  |  |       if(session != null) { | 
 |  |  |          String rtuAddr = (String) session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrRtuAddr); | 
 |  |  |          if(rtuAddr != null && !rtuAddr.trim().equals("")){ | 
 |  |  |             RtuLogDealer.log(rtuAddr, "网络接入"); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    /** | 
 |  |  |     * 网络连接关闭 | 
 |  |  |     */ | 
 |  |  |    @Override | 
 |  |  |    public void sessionClosed(IoSession session) throws Exception { | 
 |  |  |       if(session != null){ | 
 |  |  |            String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrRtuAddr) ; | 
 |  |  |  | 
 |  |  |            if(rtuAddr != null && !rtuAddr.trim().equals("")){ | 
 |  |  |               //记录状态 | 
 |  |  |               RtuStatusDealer.offLine(rtuAddr); | 
 |  |  |             RtuLogDealer.log(rtuAddr, "网络连接关闭"); | 
 |  |  |            } | 
 |  |  |           log.info("网络连接关闭," | 
 |  |  |                 + (rtuAddr==null?"":("终端地址是:" + rtuAddr))) ; | 
 |  |  |                 //+ (session==null?"":(session.getRemoteAddress() == null?"":(session.getRemoteAddress().toString()==null?"":(",终端网址是:" + session.getRemoteAddress().toString()))))) ; | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |    /** | 
 |  |  |      * 发生异常 | 
 |  |  |      */ | 
 |  |  |     public void exceptionCaught(IoSession session, Throwable cause) throws Exception { | 
 |  |  |        if(session != null && cause != null){ | 
 |  |  |           String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrRtuAddr) ; | 
 |  |  |           log.error("网络会话发生异常," | 
 |  |  |                 + (rtuAddr==null?"":("终端地址是:" + rtuAddr)) | 
 |  |  |                 + (session==null?"":(session.getRemoteAddress() != null?(",终端网址是:" + session.getRemoteAddress().toString()):"")) | 
 |  |  |                 + "\n异常消息:" + cause.getMessage(), cause); | 
 |  |  |        } | 
 |  |  |     } | 
 |  |  | 	 | 
 |  |  |     /** | 
 |  |  |      * TCP通道发送完数据后,回调的方法,进行后续数据处理 | 
 |  |  |      */ | 
 |  |  |     public void messageSended(IoSession session, Object message) throws Exception  { | 
 |  |  |          String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrRtuAddr) ; | 
 |  |  |        log.info("网络发送了数据," | 
 |  |  |              + (rtuAddr==null?"":("终端地址是:" + rtuAddr)) | 
 |  |  |              + (session==null?"":(session.getRemoteAddress() != null?(",终端网址是:" + session.getRemoteAddress().toString()):"")) ); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * TCP通道接收到数据,回调的方法,进行数据处理 | 
 |  |  |      * 此方法调用后,上行数据脱离了NIO线程,进入了核心线程 | 
 |  |  |      */ | 
 |  |  |    @Override | 
 |  |  |    public void messageReceived(IoSession session, Object message)throws Exception { | 
 |  |  |       if(session != null && message != null){ | 
 |  |  |          RtuUpTask task = new RtuUpTask() ; | 
 |  |  |          task.data = new Object[]{session, (byte[])message} ; | 
 |  |  |          try{ | 
 |  |  |             CoreUnit.getInstance().pushCoreTask(task); | 
 |  |  |          }catch(Exception e){ | 
 |  |  |             log.error(e.getMessage(), e); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |    } | 
 |  |  |  | 
 |  |  | } |