/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package debug; import java.io.IOException; import java.nio.channels.DatagramChannel; import java.nio.channels.Pipe; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java.nio.channels.spi.AbstractSelector; import java.nio.channels.spi.SelectorProvider; import java.util.concurrent.atomic.AtomicInteger; /** * * @author oleksiys */ public class DebugSelectorProvider extends SelectorProvider { private static final AtomicInteger COUNTER = new AtomicInteger(); private final SelectorProvider realProvider = sun.nio.ch.DefaultSelectorProvider.create(); public DebugSelectorProvider() { } @Override public DatagramChannel openDatagramChannel() throws IOException { return realProvider.openDatagramChannel(); } @Override public Pipe openPipe() throws IOException { return realProvider.openPipe(); } @Override public AbstractSelector openSelector() throws IOException { new Exception("openSelector #" + COUNTER.incrementAndGet()).printStackTrace(System.out); return realProvider.openSelector(); } @Override public ServerSocketChannel openServerSocketChannel() throws IOException { return realProvider.openServerSocketChannel(); } @Override public SocketChannel openSocketChannel() throws IOException { return realProvider.openSocketChannel(); } }