Package org.apache.mina.common.IoFilter

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


                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( needToCompleteInitialHandshake() )
            {
                try
                {
                    handshake( nextFilter );
                }
                catch( SSLException ssle )
                {
                    SSLException newSSLE = new SSLHandshakeException(
                            "Initial 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
        {
View Full Code Here


    private void flush(DatagramSessionImpl session) throws IOException {
        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();
                }

                session.increaseWrittenMessages();
                buf.reset();
                ((DatagramFilterChain) session.getFilterChain())
                        .fireMessageSent(session, req);
                continue;
            }

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

            SocketAddress destination = req.getDestination();
            if (destination == null) {
                destination = session.getRemoteAddress();
            }

            int writtenBytes = ch.send(buf.buf(), destination);
View Full Code Here

    private void flush(DatagramSessionImpl session) throws IOException {
        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();
                }
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

                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 (needToCompleteInitialHandshake()) {
                try {
                    handshake(nextFilter);
                } catch (SSLException ssle) {
                    SSLException newSSLE = new SSLHandshakeException(
                            "Initial 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;
                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();
                    }

                    buf.reset();
   
                    if (!buf.hasRemaining()) {
                        session.increaseWrittenMessages();
                    }
                   
                    ((DatagramFilterChain) 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

        int writtenBytes = 0;
        int maxWrittenBytes = ((DatagramSessionConfig) session.getConfig()).getSendBufferSize() << 1;
        try {
            for (;;) {
                WriteRequest req;
                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();
                    }
View Full Code Here

        }
    }

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

        if ((req = (WriteRequest) writeRequestQueue.pop()) != 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 = (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

        int writtenBytes = 0;
        int maxWrittenBytes = ((SocketSessionConfig) session.getConfig()).getSendBufferSize() << 1;
        try {
            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

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.