Example usage for io.netty.buffer Unpooled compositeBuffer

List of usage examples for io.netty.buffer Unpooled compositeBuffer

Introduction

In this page you can find the example usage for io.netty.buffer Unpooled compositeBuffer.

Prototype

public static CompositeByteBuf compositeBuffer(int maxNumComponents) 

Source Link

Document

Returns a new big-endian composite buffer with no components.

Usage

From source file:org.elasticsearch.http.nio.ByteBufUtils.java

License:Apache License

/**
 * Turns the given BytesReference into a ByteBuf. Note: the returned ByteBuf will reference the internal
 * pages of the BytesReference. Don't free the bytes of reference before the ByteBuf goes out of scope.
 *//*from w w w  .j  ava2 s.c  o  m*/
static ByteBuf toByteBuf(final BytesReference reference) {
    if (reference.length() == 0) {
        return Unpooled.EMPTY_BUFFER;
    }
    if (reference instanceof ByteBufBytesReference) {
        return ((ByteBufBytesReference) reference).toByteBuf();
    } else {
        final BytesRefIterator iterator = reference.iterator();
        // usually we have one, two, or three components from the header, the message, and a buffer
        final List<ByteBuf> buffers = new ArrayList<>(3);
        try {
            BytesRef slice;
            while ((slice = iterator.next()) != null) {
                buffers.add(Unpooled.wrappedBuffer(slice.bytes, slice.offset, slice.length));
            }
            final CompositeByteBuf composite = Unpooled.compositeBuffer(buffers.size());
            composite.addComponents(true, buffers);
            return composite;
        } catch (IOException ex) {
            throw new AssertionError("no IO happens here", ex);
        }
    }
}