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