Class CopyBytesSocketChannel

java.lang.Object
io.netty.util.DefaultAttributeMap
io.netty.channel.AbstractChannel
io.netty.channel.nio.AbstractNioChannel
io.netty.channel.nio.AbstractNioByteChannel
io.netty.channel.socket.nio.NioSocketChannel
org.elasticsearch.transport.netty4.Netty4NioSocketChannel
org.elasticsearch.transport.netty4.CopyBytesSocketChannel
All Implemented Interfaces:
io.netty.channel.Channel, io.netty.channel.ChannelOutboundInvoker, io.netty.channel.socket.DuplexChannel, io.netty.channel.socket.SocketChannel, io.netty.util.AttributeMap, Comparable<io.netty.channel.Channel>

public class CopyBytesSocketChannel extends Netty4NioSocketChannel
This class is adapted from NioSocketChannel class in the Netty project. It overrides the channel read/write behavior to ensure that the bytes are always copied to a thread-local direct bytes buffer. This happens BEFORE the call to the Java SocketChannel is issued. The purpose of this class is to allow the disabling of netty direct buffer pooling while allowing us to control how bytes end up being copied to direct memory. If we simply disabled netty pooling, we would rely on the JDK's internal thread local buffer pooling. Instead, this class allows us to create a one thread local buffer with a defined size.
  • Nested Class Summary

    Nested classes/interfaces inherited from class io.netty.channel.nio.AbstractNioByteChannel

    io.netty.channel.nio.AbstractNioByteChannel.NioByteUnsafe

    Nested classes/interfaces inherited from class io.netty.channel.nio.AbstractNioChannel

    io.netty.channel.nio.AbstractNioChannel.AbstractNioUnsafe, io.netty.channel.nio.AbstractNioChannel.NioUnsafe

    Nested classes/interfaces inherited from class io.netty.channel.AbstractChannel

    io.netty.channel.AbstractChannel.AbstractUnsafe

    Nested classes/interfaces inherited from interface io.netty.channel.Channel

    io.netty.channel.Channel.Unsafe
  • Field Summary

    Fields inherited from class io.netty.channel.nio.AbstractNioChannel

    readInterestOp
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected int
    doReadBytes(io.netty.buffer.ByteBuf byteBuf)
     
    protected void
    doWrite(io.netty.channel.ChannelOutboundBuffer in)
     
    protected int
     
    protected int
     

    Methods inherited from class org.elasticsearch.transport.netty4.Netty4NioSocketChannel

    javaChannel

    Methods inherited from class io.netty.channel.socket.nio.NioSocketChannel

    config, doBind, doClose, doConnect, doDisconnect, doFinishConnect, doShutdownOutput, doWriteBytes, doWriteFileRegion, isActive, isInputShutdown, isInputShutdown0, isOutputShutdown, isShutdown, localAddress, localAddress0, newUnsafe, parent, remoteAddress, remoteAddress0, shutdown, shutdown, shutdownInput, shutdownInput, shutdownOutput, shutdownOutput

    Methods inherited from class io.netty.channel.nio.AbstractNioByteChannel

    clearOpWrite, doWrite0, filterOutboundMessage, incompleteWrite, metadata, setOpWrite

    Methods inherited from class io.netty.channel.nio.AbstractNioChannel

    clearReadPending, doBeginRead, doDeregister, doRegister, eventLoop, isCompatible, isOpen, isReadPending, newDirectBuffer, newDirectBuffer, selectionKey, setReadPending, unsafe

    Methods inherited from class io.netty.channel.AbstractChannel

    alloc, bind, bind, bytesBeforeUnwritable, bytesBeforeWritable, close, close, closeFuture, compareTo, connect, connect, connect, connect, deregister, deregister, disconnect, disconnect, equals, flush, hashCode, id, invalidateLocalAddress, invalidateRemoteAddress, isRegistered, isWritable, maxMessagesPerWrite, newChannelPipeline, newFailedFuture, newId, newProgressivePromise, newPromise, newSucceededFuture, pipeline, read, toString, validateFileRegion, voidPromise, write, write, writeAndFlush, writeAndFlush

    Methods inherited from class io.netty.util.DefaultAttributeMap

    attr, hasAttr

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait

    Methods inherited from interface io.netty.util.AttributeMap

    attr, hasAttr

    Methods inherited from interface io.netty.channel.Channel

    alloc, bytesBeforeUnwritable, bytesBeforeWritable, closeFuture, eventLoop, flush, id, isOpen, isRegistered, isWritable, metadata, pipeline, read, unsafe

    Methods inherited from interface io.netty.channel.ChannelOutboundInvoker

    bind, bind, close, close, connect, connect, connect, connect, deregister, deregister, disconnect, disconnect, newFailedFuture, newProgressivePromise, newPromise, newSucceededFuture, voidPromise, write, write, writeAndFlush, writeAndFlush

    Methods inherited from interface java.lang.Comparable

    compareTo
  • Constructor Details

    • CopyBytesSocketChannel

      public CopyBytesSocketChannel()
  • Method Details

    • doWrite

      protected void doWrite(io.netty.channel.ChannelOutboundBuffer in) throws Exception
      Overrides:
      doWrite in class io.netty.channel.socket.nio.NioSocketChannel
      Throws:
      Exception
    • doReadBytes

      protected int doReadBytes(io.netty.buffer.ByteBuf byteBuf) throws Exception
      Overrides:
      doReadBytes in class io.netty.channel.socket.nio.NioSocketChannel
      Throws:
      Exception
    • writeToSocketChannel

      protected int writeToSocketChannel(SocketChannel socketChannel, ByteBuffer buffer) throws IOException
      Throws:
      IOException
    • readFromSocketChannel

      protected int readFromSocketChannel(SocketChannel socketChannel, ByteBuffer buffer) throws IOException
      Throws:
      IOException