On Sun, Jul 22, 2012 at 10:21 PM, Emmanuel Lécharny <[email protected]> wrote: > Hi, > > while checking the Mina 3 code, I saw that the NioTcpServer bind() method > might potentially leads to losing some events, if I'm not wrong. > > The bind() method does this : > > public synchronized void bind(final SocketAddress localAddress) throws > IOException { > serverChannel = ServerSocketChannel.open(); <<---------- here, the > channel is not ready to accept incoming requests > ... > serverChannel.socket().bind(address); <<---- !!! Now, the server can > receive incoming connections > serverChannel.configureBlocking(false); > > acceptProcessor = this.strategy.getSelectorForBindNewAddress(); > > acceptProcessor.addServer(this); <<--- We then create the selector > here > > So we can open a serveur socket, but we are not ready yet to process the > requests...Woudln't it make more sense to let the acceptProcessor do the > bind ? >
The accept event will be queued at the kernel level, and will be processed by the first select, Julien
