Package org.apache.mina.common.IoFilter

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


    {
        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


    public void testWriteEmptyStream() throws Exception
    {
        StreamWriteFilter filter = new StreamWriteFilter();
       
        InputStream stream = new ByteArrayInputStream( new byte[ 0 ] );
        WriteRequest writeRequest = new WriteRequest( stream );
       
        /*
         * Record expectations
         */
        nextFilter.messageSent( session, stream );
       
        /*
         * Replay.
         */
        mockNextFilter.replay();
        mockSession.replay();
       
        filter.filterWrite( nextFilter, session, writeRequest );
       
        /*
         * Verify.
         */
        mockNextFilter.verify();
        mockSession.verify();
       
        assertTrue( writeRequest.getFuture().isWritten() );
    }
View Full Code Here

    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

                SessionLog.debug(session, " session write: " + writeBuffer);
            }
            //debug("outNetBuffer (after copy): {0}", sslHandler.getOutNetBuffer());

            writeFuture = new DefaultWriteFuture(session);
            parent.filterWrite(nextFilter, session, new WriteRequest(
                    writeBuffer, writeFuture));

            // loop while more writes required to complete handshake
            while (needToCompleteHandshake()) {
                try {
                    handshake(nextFilter);
                } catch (SSLException ssle) {
                    SSLException newSSLE = new SSLHandshakeException(
                            "SSL handshake failed.");
                    newSSLE.initCause(ssle);
                    throw newSSLE;
                }
                if (getOutNetBuffer().hasRemaining()) {
                    if (SessionLog.isDebugEnabled(session)) {
                        SessionLog.debug(session, " write outNetBuffer2: "
                                + getOutNetBuffer());
                    }
                    org.apache.mina.common.ByteBuffer writeBuffer2 = copy(getOutNetBuffer());
                    writeFuture = new DefaultWriteFuture(session);
                    parent.filterWrite(nextFilter, session, new WriteRequest(
                            writeBuffer2, writeFuture));
                }
            }
        } finally {
            writingEncryptedData = false;
View Full Code Here

        int writtenBytes = 0;
        int maxWrittenBytes = ((DatagramSessionConfig) session.getConfig()).getSendBufferSize() << 1;
        try {
            for (;;) {
                WriteRequest req = writeRequestQueue.peek();
       
                if (req == null)
                    break;
       
                ByteBuffer buf = (ByteBuffer) req.getMessage();
                if (buf.remaining() == 0) {
                    // pop and fire event
                    writeRequestQueue.poll();
       
                    session.increaseWrittenMessages();
View Full Code Here

        }
    }

    private void releaseWriteBuffers(SocketSessionImpl session) {
        Queue<WriteRequest> writeRequestQueue = session.getWriteRequestQueue();
        WriteRequest req;

        if ((req = writeRequestQueue.poll()) != null) {
            ByteBuffer buf = (ByteBuffer) req.getMessage();
            try {
                buf.release();
            } catch (IllegalStateException e) {
                session.getFilterChain().fireExceptionCaught(session, e);
            } finally {
                // The first unwritten empty buffer must be
                // forwarded to the filter chain.
                if (buf.hasRemaining()) {
                    req.getFuture().setWritten(false);
                } else {
                    session.getFilterChain().fireMessageSent(session, req);
                }
            }

            // Discard others.
            while ((req = writeRequestQueue.poll()) != null) {
                try {
                    ((ByteBuffer) req.getMessage()).release();
                } catch (IllegalStateException e) {
                    session.getFilterChain().fireExceptionCaught(session, e);
                } finally {
                    req.getFuture().setWritten(false);
                }
            }
        }
    }
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.