package org.fastcatsearch.transport.common; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.SimpleChannelHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.concurrent.atomic.AtomicLong; public class MessageCounter extends SimpleChannelHandler { private static Logger logger = LoggerFactory.getLogger(MessageCounter.class); private final String id; private final AtomicLong writtenMessages; private final AtomicLong readMessages; public MessageCounter(String id) { this.id = id; this.writtenMessages = new AtomicLong(); this.readMessages = new AtomicLong(); } @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { // logger.debug("messageReceived >> {}, {}", ctx, e); this.readMessages.incrementAndGet(); super.messageReceived(ctx, e); } @Override public void writeRequested(ChannelHandlerContext ctx, MessageEvent e) throws Exception { this.writtenMessages.incrementAndGet(); super.writeRequested(ctx, e); } @Override public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { super.channelClosed(ctx, e); logger.debug("{} {} -> sent: {}b, recv: {}b", new Object[]{id, ctx.getChannel(), writtenMessages, readMessages}); } public long getWrittenMessages() { return writtenMessages.get(); } public long getReadMessages() { return readMessages.get(); } }