package pctelelog; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.util.ReferenceCountUtil; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import pctelelog.events.AbstractEvent; /** * A class representing the connection to a Client device * * @author Jeremy May * */ public class TCPHandler extends ChannelInboundHandlerAdapter { private Logger logger = LogManager.getLogger(TCPHandler.class); private EventOperator m_operator = null; /** * Constructor */ public TCPHandler() { EventOperator operator = EventOperator.instance(); if(operator == null) { throw new NullPointerException("Event Operator can not be null."); } m_operator = operator; } @Override public void channelRead(ChannelHandlerContext ctx, Object msg) { try { AbstractEvent event = (AbstractEvent)msg; if(event != null) { // Get remote address m_operator.onEvent(event, true); } } catch(Exception e) { logger.catching(e); } ReferenceCountUtil.release(msg); } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { cause.printStackTrace(); } }