@Override
 protected void cancelRequests() throws IOReactorException {
   ListenerEndpointImpl request;
   while ((request = this.requestQueue.poll()) != null) {
     request.cancel();
   }
 }
  private void processSessionRequests() throws IOReactorException {
    ListenerEndpointImpl request;
    while ((request = this.requestQueue.poll()) != null) {
      SocketAddress address = request.getAddress();
      ServerSocketChannel serverChannel;
      try {
        serverChannel = ServerSocketChannel.open();
        serverChannel.configureBlocking(false);
      } catch (IOException ex) {
        throw new IOReactorException("Failure opening server socket", ex);
      }
      try {
        serverChannel.socket().bind(address);
      } catch (IOException ex) {
        request.failed(ex);
        if (this.exceptionHandler == null || !this.exceptionHandler.handle(ex)) {
          throw new IOReactorException("Failure binding socket to address " + address, ex);
        } else {
          return;
        }
      }
      try {
        SelectionKey key = serverChannel.register(this.selector, SelectionKey.OP_ACCEPT);
        key.attach(request);
        request.setKey(key);
      } catch (IOException ex) {
        throw new IOReactorException("Failure registering channel " + "with the selector", ex);
      }

      this.endpoints.add(request);
      request.completed(serverChannel.socket().getLocalSocketAddress());
    }
  }