l_channel.read( l_buf ) ;
int l_count = 0 ;   if ( ( l_count = l_channel.read( l_buf ) ) <= 0 ) { l_channel.socket().close() ; l_channel.close() ; l_key.cancel() ; return ; }  l_buf.flip() ;
    private void processInput()    {        /*         * Process the selectors that are ready.  For each selector that         * is ready we read some data into a buffer we claim from a buffer         * pool.  Next we create an InputEvent using the buffer and publish         * it using the event notifier/router.         */        Iterator l_list = m_selector.selectedKeys().iterator() ;        while ( l_list.hasNext() )        {            SelectionKey l_key = ( SelectionKey ) l_list.next() ;            ClientKey l_client = ( ClientKey ) l_key.attachment() ;                             if ( l_key.isReadable() )            {                ByteBuffer l_buf = null ;                SocketChannel l_channel = ( SocketChannel ) l_key.channel() ;                /*                 * claim a buffer, read from channel into it and remove                  * the current selection key from selected set                 */                 try                {                    l_buf = m_bp.getBuffer( this ) ;                    l_channel.read( l_buf ) ;                    m_monitor.inputRecieved(                             l_buf.asReadOnlyBuffer(), l_client ) ;                    l_list.remove() ;                }                catch ( ResourceException e )                {                    m_monitor.bufferUnavailable( m_bp, e ) ;                    continue ;                }                catch ( IOException e )                {                    m_monitor.readFailed( l_client, e ) ;                    m_bp.releaseClaim( l_buf, this ) ;                    continue ;                }                                    /*                 * Monitor input and create the event publishing it.  Note that                 * releasing claim to the buffer does not free it.  It just                  * removes this object as an interested party from the list                 * of interested parties.  After synchronously publishing the                  * input event there are other interesed parties that have                  * increased the reference count.                 */                 m_monitor.inputRecieved( l_client ) ;                InputEvent l_event = new ConcreteInputEvent( l_client, l_buf ) ;                m_router.publish( l_event ) ;                m_bp.releaseClaim( l_buf, this ) ;            }        }    }