Package org.glassfish.grizzly

Examples of org.glassfish.grizzly.Buffer


     * Read post body in an array.
     */
    protected int readPostBody(byte body[], int len)
            throws IOException {

        Buffer b = coyoteRequest.getPostBody(len).duplicate();
        final int length = b.limit() - b.position();
        b.get(body, b.position(), length);
        return length;

    }
View Full Code Here


     * Read post body in an array.
     */
    protected int readPostBody(byte body[], int len)
            throws IOException {

        Buffer b = coyoteRequest.getPostBody(len).duplicate();
        final int length = b.limit() - b.position();
        b.get(body, b.position(), length);
        return length;

    }
View Full Code Here

            final WriteResult<WritableMessage, SocketAddress> currentResult)
            throws IOException {
        final long written;

        if (message instanceof Buffer) {
            final Buffer buffer = (Buffer) message;
           
            try {
                if (!buffer.hasRemaining()) {
                    written = 0;
                } else if (!buffer.isComposite()) {  // Simple buffer
                    written = TCPNIOUtils.writeSimpleBuffer(
                            (TCPNIOConnection) connection, buffer);
                } else { // Composite buffer
                    written = TCPNIOUtils.writeCompositeBuffer(
                            (TCPNIOConnection) connection, (CompositeBuffer) buffer);
View Full Code Here

            if (record.isEmptyRecord()) {
                savedBufferStates.add(null);
                continue;
            }
           
            final Buffer message = record.getMessage();
            final int pos = message.position();
           
            final int messageRemaining = message.remaining();

            final BufferArray bufferArray =
                    (totalRemaining >= messageRemaining) ?
                    message.toBufferArray() :
                    message.toBufferArray(pos, pos + totalRemaining);

            savedBufferStates.add(bufferArray);
            TCPNIOUtils.fill(bufferArray, totalRemaining, ioRecord);
           
            totalRemaining -= messageRemaining;
View Full Code Here

                written += EMPTY_RECORD_SPACE_VALUE;
                continue;
            }

            final WriteResult firstResult = record.getCurrentResult();
            final Buffer firstMessage = record.getMessage();
            final long firstMessageRemaining =
                    record.getInitialMessageSize() - firstResult.getWrittenSize();

            if (remainder >= firstMessageRemaining) {
                remainder -= firstMessageRemaining;
                queue.removeFirst();
                firstResult.setWrittenSize(record.getInitialMessageSize());
                firstMessage.position(firstMessage.limit());
               
                ((TCPNIOConnection) connection).onWrite(firstMessage, firstMessageRemaining);
                               
                record.notifyCompleteAndRecycle();
            } else {
                firstMessage.position(firstMessage.position() + remainder);
                firstResult.setWrittenSize(
                        firstResult.getWrittenSize() + remainder);
               
                ((TCPNIOConnection) connection).onWrite(firstMessage, remainder);
                return written;
View Full Code Here

            @Override
            public int intercept(int event, Object context,
                    ReadResult<Buffer, ?> result) {
                if (event == Reader.READ_EVENT) {
                    final Buffer buffer = result.getMessage();
                    result.setMessage(null);

                    if (buffer == null) {
                        return Interceptor.INCOMPLETED;
                    }

                    buffer.trim();
                    append(buffer);
                    if (isDone) {
                        return Interceptor.COMPLETED;
                    }
View Full Code Here

    public NextAction handleRead(final FilterChainContext ctx)
            throws IOException {
        final UDPNIOConnection connection = (UDPNIOConnection) ctx.getConnection();
        final boolean isBlocking = ctx.getTransportContext().isBlocking();

        final Buffer inBuffer = ctx.getMessage();

        final ReadResult<Buffer, SocketAddress> readResult;

        if (!isBlocking) {
            readResult = ReadResult.create(connection);
            transport.read(connection, inBuffer, readResult);

        } else {
            GrizzlyFuture<ReadResult<Buffer, SocketAddress>> future =
                    transport.getTemporarySelectorIO().getReader().read(
                    connection, inBuffer);
            try {
                readResult = future.get();
                future.recycle(false);
            } catch (ExecutionException e) {
                final Throwable cause = e.getCause();
                if (cause instanceof IOException) {
                    throw (IOException) cause;
                }

                throw new IOException(cause);
            } catch (InterruptedException e) {
                throw new IOException(e);
            }
        }

        if (readResult.getReadSize() > 0) {
            final Buffer buffer = readResult.getMessage();
            buffer.trim();
            final Holder<SocketAddress> addressHolder =
                    readResult.getSrcAddressHolder();
            readResult.recycle();

            ctx.setMessage(buffer);
View Full Code Here

        final int written;
        if (message.remaining() == 0) {
            written = 0;
        } else if (message instanceof Buffer) {
            final Buffer buffer = (Buffer) message;

            try {
                written = buffer.isComposite() ?
                        TCPNIOUtils.writeCompositeBuffer(connection,
                            (CompositeBuffer) buffer) :
                        TCPNIOUtils.writeSimpleBuffer(connection, buffer);

                final boolean hasWritten = (written >= 0);
View Full Code Here

    }

    static void fill(final BufferArray bufferArray,
            final int totalBufferSize, final DirectByteBufferRecord ioRecord) {
       
        final Buffer buffers[] = bufferArray.getArray();
        final int size = bufferArray.size();
       
        int remaining = totalBufferSize;
       
        for (int i = 0; i < size; i++) {
           
            final Buffer buffer = buffers[i];
            assert !buffer.isComposite();
           
            final int bufferSize = buffer.remaining();
            if (bufferSize == 0) {
                continue;
            } else if (buffer.isDirect()) {
                ioRecord.finishBufferSlice();
                ioRecord.putToArray(buffer.toByteBuffer());
            } else {
                ByteBuffer currentDirectBufferSlice = ioRecord.getDirectBufferSlice();
               
                if (currentDirectBufferSlice == null) {
                    final ByteBuffer directByteBuffer = ioRecord.getDirectBuffer();
                    currentDirectBufferSlice =
                            directByteBuffer == null
                                ? ioRecord.allocate(remaining)
                                : ioRecord.sliceBuffer();
                   
                    ioRecord.putToArray(currentDirectBufferSlice);
                }
               
                final int oldLim = currentDirectBufferSlice.limit();
                currentDirectBufferSlice.limit(currentDirectBufferSlice.position() + bufferSize);
                buffer.get(currentDirectBufferSlice);
                currentDirectBufferSlice.limit(oldLim);
            }
           
            remaining -= bufferSize;
        }
View Full Code Here

        final MemoryManager memoryManager =
                connection.getTransport().getMemoryManager();
       
        int read;
        Throwable error = null;
        Buffer buffer = null;
       
        try {
            final int receiveBufferSize =
                    Math.min(TCPNIOTransport.MAX_RECEIVE_BUFFER_SIZE,
                            connection.getReadBufferSize());
       
            if (!memoryManager.willAllocateDirect(receiveBufferSize)) {
                final DirectByteBufferRecord ioRecord =
                        DirectByteBufferRecord.get();
                final ByteBuffer directByteBuffer =
                        ioRecord.allocate(receiveBufferSize);
               
                try {
                    read = readSimpleByteBuffer(connection, directByteBuffer);
                    if (read > 0) {
                        directByteBuffer.flip();
                        buffer = memoryManager.allocate(read);
                        buffer.put(directByteBuffer);
                    }
                } finally {
                    ioRecord.release();
                }
            } else {
                buffer = memoryManager.allocateAtLeast(receiveBufferSize);
                read = readBuffer(connection, buffer);
            }
        } catch (Throwable e) {
            error = e;
            read = -1;
        }
       
        if (read > 0) {
            buffer.position(read);
            buffer.allowBufferDispose(true);
        } else {
            if (buffer != null) {
                buffer.dispose();
            }
           
            if (read < 0) {
                //noinspection ThrowableResultOfMethodCallIgnored
                throw error != null
View Full Code Here

TOP

Related Classes of org.glassfish.grizzly.Buffer

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.