/** * Instantiates a new AbstractServer. * * @param acceptor The acceptor handling the server. * @param selector The selector the server uses to create workers for accepted clients. * @param pipeline The pipeline of the server. */ public AbstractServer(Selector selector, Pipeline pipeline, Acceptor acceptor) { this.selector = selector; this.pipeline = pipeline; this.acceptor = acceptor; this.clients = new ConcurrentSet<Client>(); this.state = new State(Closed); this.serverListeners = new ArrayList<ServerListener>(1); this.clientListener = pipeline.getClientListener(); }