Package org.apache.mina.common.IoFilter

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


        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();
   
                    buf.reset();
                   
                    if (!buf.hasRemaining()) {
                        session.increaseWrittenMessages();
                    }
                    session.getFilterChain().fireMessageSent(session, req);
                    continue;
                }
   
                SocketAddress destination = req.getDestination();
                if (destination == null) {
                    destination = session.getRemoteAddress();
                }
   
                int localWrittenBytes = ch.send(buf.buf(), destination);
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

        int writtenBytes = 0;
        int maxWrittenBytes = ((SocketSessionConfig) session.getConfig()).getSendBufferSize() << 1;
        try {
            for (;;) {
                WriteRequest req = writeRequestQueue.peek();

                if (req == null)
                    break;

                ByteBuffer buf = (ByteBuffer) req.getMessage();
                if (buf.remaining() == 0) {
                    writeRequestQueue.poll();

                    buf.reset();
                   
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();
       
                    buf.reset();
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

    public void testCompression() throws Exception
    {
        // prepare the input data
        ByteBuffer buf = ByteBuffer.wrap( strCompress.getBytes( "UTF8" ) );
        ByteBuffer actualOutput = actualDeflater.deflate( buf );
        WriteRequest writeRequest = new WriteRequest( buf );

        // record all the mock calls
        ioFilterChain.contains( CompressionFilter.class );
        mockIoFilterChain.setReturnValue( false );

        ioFilterChain.getSession();
        mockIoFilterChain.setReturnValue( session );

        session.setAttribute( CompressionFilter.class.getName() + ".Deflater", deflater );
        mockSession.setDefaultMatcher( new DataMatcher() );
        mockSession.setReturnValue( null, MockControl.ONE );

        session.setAttribute( CompressionFilter.class.getName() + ".Inflater", inflater );
        mockSession.setReturnValue( null, MockControl.ONE );

        session.containsAttribute( CompressionFilter.DISABLE_COMPRESSION_ONCE );
        mockSession.setReturnValue( false );

        session.getAttribute( CompressionFilter.class.getName() + ".Deflater" );
        mockSession.setReturnValue( deflater );

        nextFilter.filterWrite( session, new WriteRequest( actualOutput ) );

        // switch to playback mode
        mockSession.replay();
        mockIoFilterChain.replay();
        mockNextFilter.replay();
View Full Code Here

        protected boolean argumentMatches( Object arg0, Object arg1 )
        {
            // we need to only verify the ByteBuffer output
            if( arg0 instanceof WriteRequest )
            {
                WriteRequest expected = (WriteRequest) arg0;
                WriteRequest actual = (WriteRequest) arg1;
                ByteBuffer bExpected = (ByteBuffer) expected.getMessage();
                ByteBuffer bActual = (ByteBuffer) actual.getMessage();
                return bExpected.equals( bActual );
            }
            return true;
        }
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 )
            {
                session.getFilterChain().fireExceptionCaught( session, e );
            }
            finally
            {
                req.getFuture().setWritten( false );
            }
        }
    }
View Full Code Here

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

        for( ; ; )
        {
            WriteRequest req;

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

            if( req == null )
                break;

            ByteBuffer buf = ( ByteBuffer ) req.getMessage();
            if( buf.remaining() == 0 )
            {
                synchronized( writeRequestQueue )
                {
                    writeRequestQueue.pop();
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 )
                {
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.