Package org.apache.mina.common

Examples of org.apache.mina.common.ByteBuffer


        SocketChannel ch = session.getChannel();

        Queue writeBufferQueue = session.getWriteBufferQueue();
        Queue writeMarkerQueue = session.getWriteMarkerQueue();

        ByteBuffer buf;
        Object marker;
        for( ;; )
        {
            synchronized( writeBufferQueue )
            {
                buf = ( ByteBuffer ) writeBufferQueue.first();
                marker = writeMarkerQueue.first();
            }

            if( buf == null )
                break;

            if( buf.remaining() == 0 )
            {
                synchronized( writeBufferQueue )
                {
                    writeBufferQueue.pop();
                    writeMarkerQueue.pop();
                }
                try
                {
                    buf.release();
                }
                catch( IllegalStateException e )
                {
                    session.getManagerFilterChain().exceptionCaught( session, e );
                }

                session.increaseWrittenWriteRequests();
                session.getManagerFilterChain().dataWritten( session, marker );
                continue;
            }

            int writtenBytes = ch.write( buf.buf() );
            if( writtenBytes > 0 )
            {
                session.increaseWrittenBytes( writtenBytes );
                session.resetIdleCount( IdleStatus.BOTH_IDLE );
                session.resetIdleCount( IdleStatus.WRITER_IDLE );
            }

            if( buf.hasRemaining() )
            {
                // Kernel buffer is full
                key.interestOps( key.interestOps() | SelectionKey.OP_WRITE );
                break;
            }
View Full Code Here


                if( log.isDebugEnabled() )
                {
                    log.debug( session + " encrypt: " + buf );
                }
                handler.encrypt( buf.buf() );
                ByteBuffer encryptedBuffer = copy( handler
                        .getOutNetBuffer() );

                if( log.isDebugEnabled() )
                {
                    log.debug( session + " encrypted buf: " + encryptedBuffer);
View Full Code Here

            log.debug( session + " appBuffer: " + sslHandler.getAppBuffer() );
        }
        if( sslHandler.getAppBuffer().hasRemaining() )
        {
            // forward read app data
            ByteBuffer readBuffer = copy( sslHandler.getAppBuffer() );
            if( log.isDebugEnabled() )
            {
                log.debug( session + " app data read: " + readBuffer + " (" + readBuffer.getHexDump() + ')' );
            }
            nextFilter.dataRead( session, readBuffer );
        }
    }
View Full Code Here

            if( log.isDebugEnabled() )
            {
                log.debug( session + " write outNetBuffer: " +
                                   sslHandler.getOutNetBuffer() );
            }
            ByteBuffer writeBuffer = copy( sslHandler.getOutNetBuffer() );
            if( log.isDebugEnabled() )
            {
                log.debug( session + " session write: " + writeBuffer );
            }
            //debug("outNetBuffer (after copy): {0}", sslHandler.getOutNetBuffer());
            filterWrite( nextFilter, session, writeBuffer, SSL_MARKER );

            // loop while more writes required to complete handshake
            while( sslHandler.needToCompleteInitialHandshake() )
            {
                try
                {
                    sslHandler.continueHandshake( nextFilter );
                }
                catch( SSLException ssle )
                {
                    SSLException newSSLE = new SSLHandshakeException(
                            "Initial SSL handshake failed." );
                    newSSLE.initCause( ssle );
                    throw newSSLE;
                }
                if( sslHandler.getOutNetBuffer().hasRemaining() )
                {
                    if( log.isDebugEnabled() )
                    {
                        log.debug( session + " write outNetBuffer2: " +
                                           sslHandler.getOutNetBuffer() );
                    }
                    ByteBuffer writeBuffer2 = copy( sslHandler
                            .getOutNetBuffer() );
                    filterWrite( nextFilter, session, writeBuffer2, SSL_MARKER );
                }
            }
        }
View Full Code Here

     * @param src the buffer to copy
     * @return the new buffer, ready to read from
     */
    private static ByteBuffer copy( java.nio.ByteBuffer src )
    {
        ByteBuffer copy = ByteBuffer.allocate( src.remaining() );
        copy.put( src );
        copy.flip();
        return copy;
    }
View Full Code Here

                        Queue queue = psession.encOut.getBufferQueue();
                        encoder.encode( psession, message, psession.encOut );
                        for( ;; )
                        {
                            ByteBuffer buf = ( ByteBuffer ) queue.pop();
                            if( buf == null )
                                break;
                            // use marker only if it is the last ByteBuffer
                            Object marker = queue.isEmpty() ? message : null;
                            session.write( buf, marker );
View Full Code Here

                                                  "Cannot encode too long string." );
        }

        val += "\r\n";

        ByteBuffer buf = ByteBuffer.allocate( val.length() );
        for( int i = 0; i < val.length(); i++ )
        {
            buf.put( ( byte ) val.charAt( i ) );
        }

        buf.flip();
        out.write( buf );
    }
View Full Code Here

        {
            throw new IllegalStateException(
                    "This decoder doesn't work for connectionless transport types." );
        }

        ByteBuffer buf = this.buf;
        buf.put( in );
        buf.flip();

        try
        {
            for( ;; )
            {
                int oldPos = buf.position();
                boolean decoded = doDecode( session, buf, out );
                if( decoded )
                {
                    if( buf.position() == oldPos )
                    {
                        throw new IllegalStateException(
                                "doDecode() can't return true when buffer is not consumed." );
                    }
                   
                    if( !buf.hasRemaining() )
                    {
                        break;
                    }
                }
                else
                {
                    break;
                }
            }
        }
        finally
        {
            buf.compact();
        }
    }
View Full Code Here

    }

    public void dataRead( IoSession session, ByteBuffer rb )
    {
        // Write the received data back to remote peer
        ByteBuffer wb = ByteBuffer.allocate( rb.remaining() );
        wb.put( rb );
        wb.flip();
        session.write( wb, null );
    }
View Full Code Here

                in.limit(oldLimit);
                in.position(pos);

                if (ctx.getOverflowPosition() == 0) {
                    ByteBuffer buf = ctx.getBuffer();
                    buf.flip();
                    buf.limit(buf.limit() - matchCount);
                    try {
                        out.write(buf.getString(ctx.getDecoder()));
                    } finally {
                        buf.clear();
                    }
                } else {
                    int overflowPosition = ctx.getOverflowPosition();
                    ctx.reset();
                    throw new BufferDataException(
View Full Code Here

TOP

Related Classes of org.apache.mina.common.ByteBuffer

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.