/**
  * 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();
 }