Package org.apache.mina.common.IoFilter

Examples of org.apache.mina.common.IoFilter.WriteRequest


    public void testWriteNonStreamMessage() throws Exception
    {
        StreamWriteFilter filter = new StreamWriteFilter();
       
        Object message = new Object();
        WriteRequest writeRequest = new WriteRequest( message );
       
        /*
         * Record expectations
         */
        nextFilter.filterWrite( session, writeRequest );
        session.getAttribute( StreamWriteFilter.CURRENT_STREAM );
        mockSession.setReturnValue( null );
        nextFilter.messageSent( session, message );
       
        /*
         * Replay.
         */
        mockNextFilter.replay();
        mockSession.replay();
       
        filter.filterWrite( nextFilter, session, writeRequest );
        filter.messageSent( nextFilter, session, message );
       
        /*
         * Verify.
         */
        mockNextFilter.verify();
        mockSession.verify();
       
        assertTrue( writeRequest.getFuture().isWritten() );
    }
View Full Code Here


        StreamWriteFilter filter = new StreamWriteFilter();
       
        byte[] data = new byte[] { 1, 2, 3, 4 };
       
        InputStream stream = new ByteArrayInputStream( data );
        WriteRequest writeRequest = new WriteRequest( stream );
       
        /*
         * Record expectations
         */
        session.setAttribute( StreamWriteFilter.CURRENT_STREAM, stream );
        mockSession.setReturnValue(null);
        session.setAttribute( StreamWriteFilter.INITIAL_WRITE_FUTURE, writeRequest.getFuture() );
        mockSession.setReturnValue(null);
        nextFilter.filterWrite( session, new WriteRequest( ByteBuffer.wrap( data ) ) );
        mockNextFilter.setMatcher( new WriteRequestMatcher() );
       
        session.getAttribute( StreamWriteFilter.CURRENT_STREAM );
        mockSession.setReturnValue( stream );
        session.removeAttribute( StreamWriteFilter.CURRENT_STREAM );
        mockSession.setReturnValue( stream );
        session.removeAttribute( StreamWriteFilter.INITIAL_WRITE_FUTURE );
        mockSession.setReturnValue( writeRequest.getFuture() );
        session.removeAttribute( StreamWriteFilter.WRITE_REQUEST_QUEUE );
        mockSession.setReturnValue( null );
        nextFilter.messageSent( session, stream );
       
        /*
         * Replay.
         */
        mockNextFilter.replay();
        mockSession.replay();
       
        filter.filterWrite( nextFilter, session, writeRequest );
        filter.messageSent( nextFilter, session, data );
       
        /*
         * Verify.
         */
        mockNextFilter.verify();
        mockSession.verify();
       
        assertTrue( writeRequest.getFuture().isWritten() );
    }
View Full Code Here

        byte[] chunk1 = new byte[] { 1, 2, 3, 4 };
        byte[] chunk2 = new byte[] { 5, 6, 7, 8 };
        byte[] chunk3 = new byte[] { 9, 10 };
       
        InputStream stream = new ByteArrayInputStream( data );
        WriteRequest writeRequest = new WriteRequest( stream );
       
        /*
         * Record expectations
         */
        session.setAttribute( StreamWriteFilter.CURRENT_STREAM, stream );
        mockSession.setReturnValue(null);
        session.setAttribute( StreamWriteFilter.INITIAL_WRITE_FUTURE, writeRequest.getFuture() );
        mockSession.setReturnValue(null);
        nextFilter.filterWrite( session, new WriteRequest( ByteBuffer.wrap( chunk1 ) ) );
        mockNextFilter.setMatcher( new WriteRequestMatcher() );
       
        session.getAttribute( StreamWriteFilter.CURRENT_STREAM );
        mockSession.setReturnValue( stream );
        nextFilter.filterWrite( session, new WriteRequest( ByteBuffer.wrap( chunk2 ) ) );
       
        session.getAttribute( StreamWriteFilter.CURRENT_STREAM );
        mockSession.setReturnValue( stream );
        nextFilter.filterWrite( session, new WriteRequest( ByteBuffer.wrap( chunk3 ) ) );
       
        session.getAttribute( StreamWriteFilter.CURRENT_STREAM );
        mockSession.setReturnValue( stream );
        session.removeAttribute( StreamWriteFilter.CURRENT_STREAM );
        mockSession.setReturnValue( stream );
        session.removeAttribute( StreamWriteFilter.INITIAL_WRITE_FUTURE );
        mockSession.setReturnValue( writeRequest.getFuture() );
        session.removeAttribute( StreamWriteFilter.WRITE_REQUEST_QUEUE );
        mockSession.setReturnValue( null );
        nextFilter.messageSent( session, stream );
       
        /*
         * Replay.
         */
        mockNextFilter.replay();
        mockSession.replay();
       
        filter.filterWrite( nextFilter, session, writeRequest );
        filter.messageSent( nextFilter, session, chunk1 );
        filter.messageSent( nextFilter, session, chunk2 );
        filter.messageSent( nextFilter, session, chunk3 );
       
        /*
         * Verify.
         */
        mockNextFilter.verify();
        mockSession.verify();
       
        assertTrue( writeRequest.getFuture().isWritten() );
    }
View Full Code Here

         * Replay.
         */
        mockNextFilter.replay();
        mockSession.replay();

        WriteRequest wr = new WriteRequest( new Object() );
        filter.filterWrite( nextFilter, session, wr );
        assertEquals( 1, queue.size() );
        assertSame( wr, queue.pop() );
       
        /*
 
View Full Code Here

   
    public void testWritesWriteRequestQueueWhenFinished() throws Exception
    {
        StreamWriteFilter filter = new StreamWriteFilter();

        WriteRequest wrs[] = new WriteRequest[] {
                new WriteRequest( new Object() ),
                new WriteRequest( new Object() ),
                new WriteRequest( new Object() )
        };
        Queue queue = new Queue();
        queue.push( wrs[ 0 ] );
        queue.push( wrs[ 1 ] );
        queue.push( wrs[ 2 ] );
View Full Code Here

    {
        protected boolean argumentMatches( Object expected, Object actual )
        {
            if( expected instanceof WriteRequest && expected instanceof WriteRequest )
            {
                WriteRequest w1 = ( WriteRequest ) expected;
                WriteRequest w2 = ( WriteRequest ) actual;
               
                return w1.getMessage().equals( w2.getMessage() )
                    && w1.getFuture().isWritten() == w2.getFuture().isWritten();
            }
            return super.argumentMatches( expected, actual );
        }
View Full Code Here

    {
        DatagramChannel ch = session.getChannel();

        Queue writeRequestQueue = session.getWriteRequestQueue();

        WriteRequest req;
        for( ;; )
        {
            synchronized( writeRequestQueue )
            {
                req = ( WriteRequest ) writeRequestQueue.first();
            }

            if( req == null )
                break;

            ByteBuffer buf = ( ByteBuffer ) req.getMessage();
            if( buf.remaining() == 0 )
            {
                // pop and fire event
                synchronized( writeRequestQueue )
                {
                    writeRequestQueue.pop();
                }

                req.getFuture().setWritten( true );
                session.increaseWrittenWriteRequests();
                ( ( DatagramFilterChain ) session.getFilterChain() ).messageSent( session, buf );
                continue;
            }

            SelectionKey key = session.getSelectionKey();
            if( key == null )
            {
                scheduleFlush( session );
                break;
            }
            if( !key.isValid() )
            {
                continue;
            }

            int pos = buf.position();
            int writtenBytes = ch.write( buf.buf() );

            if( writtenBytes == 0 )
            {
                // Kernel buffer is full
                key.interestOps( key.interestOps() | SelectionKey.OP_WRITE );
            }
            else if( writtenBytes > 0 )
            {
                key.interestOps( key.interestOps()
                                 & ( ~SelectionKey.OP_WRITE ) );

                // pop and fire event
                synchronized( writeRequestQueue )
                {
                    writeRequestQueue.pop();
                }

                session.increaseWrittenBytes( writtenBytes );
                req.getFuture().setWritten( true );
                session.increaseWrittenWriteRequests();
                ( ( DatagramFilterChain ) session.getFilterChain() ).messageSent( session, buf.position( pos ) );
            }
        }
    }
View Full Code Here

    }
   
    private void releaseWriteBuffers( SocketSessionImpl session )
    {
        Queue writeRequestQueue = session.getWriteRequestQueue();
        WriteRequest req;
       
        while( ( req = ( WriteRequest ) writeRequestQueue.pop() ) != null )
        {
            try
            {
                ( ( ByteBuffer ) req.getMessage() ).release();
            }
            catch( IllegalStateException e )
            {
                ( ( SocketFilterChain ) session.getFilterChain() ).exceptionCaught( session, e );
            }
            finally
            {
                req.getFuture().setWritten( false );
            }
        }
    }
View Full Code Here

        key.interestOps( key.interestOps() & ( ~SelectionKey.OP_WRITE ) );

        SocketChannel ch = session.getChannel();
        Queue writeRequestQueue = session.getWriteRequestQueue();

        WriteRequest req;
        for( ;; )
        {
            synchronized( writeRequestQueue )
            {
                req = ( WriteRequest ) writeRequestQueue.first();
            }

            if( req == null )
                break;

            ByteBuffer buf = ( ByteBuffer ) req.getMessage();
            if( buf.remaining() == 0 )
            {
                synchronized( writeRequestQueue )
                {
                    writeRequestQueue.pop();
                }
               
                req.getFuture().setWritten( true );
                session.increaseWrittenWriteRequests();
                ( ( SocketFilterChain ) session.getFilterChain() ).messageSent( session, buf.reset() );
                continue;
            }
View Full Code Here

    private void run( String expectedResult )
    {
        chain.fireSessionCreated( session );
        chain.fireSessionOpened( session );
        chain.fireMessageReceived( session, new Object() );
        chain.fireFilterWrite( session, new WriteRequest( new Object() ) );
        chain.fireSessionIdle( session, IdleStatus.READER_IDLE );
        chain.fireExceptionCaught( session, new Exception() );
        chain.fireSessionClosed( session );
       
        result = formatResult( result );
View Full Code Here

TOP

Related Classes of org.apache.mina.common.IoFilter.WriteRequest

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.