public ListenableSocketChannel(SocketChannel channel,Executor executor,AsyncSelector selectorThread) throws IOException {
  logger.debug("ListenableSocketChannel: channel={}",channel);
  if (channel == null || executor == null)   throw new IllegalArgumentException();
  if (channel.isBlocking())   throw new IllegalArgumentException("channel arg must be in non-blocking mode. (SocketChannel.configureBlocking(false))");
  this.channel=channel;
  this.executor=executor;
  this.selector=selectorThread;
  selector.register(channel,0,selListener);
}

public ListenableSocketChannel ( SocketChannel channel , Executor executor , AsyncSelector selectorThread ) throws IOException { logger . debug ( "ListenableSocketChannel: channel={}" , channel ) ; if ( channel == null || executor == null ) throw new IllegalArgumentException ( ) ; if ( channel . isBlocking ( ) ) throw new IllegalArgumentException ( "channel arg must be in non-blocking mode. (SocketChannel.configureBlocking(false))" ) ; this . channel = channel ; this . executor = executor ; this . selector = selectorThread ; selector . register ( channel , 0 , selListener ) ; }
create async - socket wrapper over given socket channel , given listener handling thread , and given selector thread .
