package lsr.paxos.network; import java.io.IOException; import java.nio.channels.Selector; import java.nio.channels.SocketChannel; import java.nio.channels.spi.SelectorProvider; import lsr.common.PID; public abstract class NioConnection extends Thread { protected final static int TCP_BUFFER_SIZE = 4 * 1024 * 1024; protected NioNetwork network; protected SocketChannel channel; protected Selector selector; protected final PID replica; protected final int replicaId; protected volatile boolean stop = false; public NioConnection(NioNetwork network, PID replica, SocketChannel channel) throws IOException { this.network = network; this.replica = replica; this.replicaId = replica.getId(); this.channel = channel; selector = SelectorProvider.provider().openSelector(); this.setDaemon(true); } @Override public abstract void run(); protected abstract void disposeConnection(); protected boolean isActiveConnection() { return Network.localId < replicaId; } }