接:深入阅读Mina源码(3) —— Mina之IOAdapter(一))

 

4. AbstractPollingIoAcceptor

 

     这个类在org.apache.mina.core.polling,这个包一共有四个类,这个类就可以代表整个包的内容了,细致说一下,之后就不再深入介绍这个包了。从名字可以看出包里面的类主要完成轮询。

     AbstractPollingIoAcceptor主要完成了AbstractIoAcceptor定义的实际实现方法,如unbind0、bindInternal、dispose0,另外下方了一些更细致的accept、open、select、colse方法让子类实现,也清晰的可以看出它主要为Socket提供父类的一些实现,同时也有了NIO的影子。

     看一下AbstractPollingIoAcceptor的属性字段,可以看到

 

 

Java代码 深入阅读Mina源码(3) —— Mina之IOAdapter(二) _阅读 深入阅读Mina源码(3) —— Mina之IOAdapter(二) _阅读_02
  1. /** A lock used to protect the selector to be waked up before it's created */  
  2.     private final Semaphore lock = new Semaphore(1);   
  3.   
  4.     private final IoProcessor<S> processor;   
  5.   
  6.     private final boolean createdProcessor;   
  7.   
  8.     private final Queue<AcceptorOperationFuture> registerQueue = new ConcurrentLinkedQueue<AcceptorOperationFuture>();   
  9.   
  10.     private final Queue<AcceptorOperationFuture> cancelQueue = new ConcurrentLinkedQueue<AcceptorOperationFuture>();   
  11.   
  12.     private final Map<SocketAddress, H> boundHandles = Collections.synchronizedMap(new HashMap<SocketAddress, H>());   
  13.   
  14.     private final ServiceOperationFuture disposalFuture = new ServiceOperationFuture();   
  15.   
  16.     /** A flag set when the acceptor has been created and initialized */  
  17.     private volatile boolean selectable;   
  18.   
  19.     /** The thread responsible of accepting incoming requests */  
  20.     private AtomicReference<Acceptor> acceptorRef = new AtomicReference<Acceptor>();   
  21.   
  22.     protected boolean reuseAddress = false;   
  23.   
  24.     /**  
  25.      * Define the number of socket that can wait to be accepted. Default  
  26.      * to 50 (as in the SocketServer default).  
  27.      */  
  28.     protected int backlog = 50;