private void doAccept(final SelectionKey key) { SocketChannel sc = null; final TCListenerImpl lsnr = (TCListenerImpl) key.attachment(); try { final ServerSocketChannel ssc = (ServerSocketChannel) key.channel(); sc = ssc.accept(); if (sc == null) { // non blocking channel accept can return null logger.warn("New connection accept didn't go through for " + ssc.socket()); return; } sc.configureBlocking(false); final TCConnectionImpl conn = lsnr.createConnection(sc, CoreNIOServices.this, socketParams); requestReadInterest(conn, sc); } catch (IOException ioe) { if (logger.isInfoEnabled()) { logger.info("IO Exception accepting new connection", ioe); } cleanupChannel(sc, null); } }
public void registerListener(TCListenerImpl lsnr, ServerSocketChannel ssc) { requestAcceptInterest(lsnr, ssc); listenerAdded(lsnr); lsnr.addEventListener(this); }