package net.tomp2p.connection;
import io.netty.channel.ChannelHandler.Sharable;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelOutboundHandlerAdapter;
import io.netty.channel.ChannelPromise;
import java.net.SocketAddress;
import java.util.concurrent.atomic.AtomicInteger;
/**
* This is a simple counter that counts the current open connections and total connections
*
* @author Thomas Bocek
*
*/
@Sharable
public class CountConnectionOutboundHandler extends ChannelOutboundHandlerAdapter {
private final AtomicInteger counterCurrent = new AtomicInteger();
private final AtomicInteger counterTotal = new AtomicInteger();
@Override
public void connect(ChannelHandlerContext ctx, SocketAddress remoteAddress, SocketAddress localAddress,
ChannelPromise promise) throws Exception {
counterCurrent.incrementAndGet();
counterTotal.incrementAndGet();
ctx.connect(remoteAddress, localAddress, promise);
}
@Override
public void close(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception {
counterCurrent.decrementAndGet();
ctx.close(promise);
}
public int current() {
return counterCurrent.get();
}
public int total() {
return counterTotal.get();
}
public void reset() {
counterCurrent.set(0);
counterTotal.set(0);
}
}