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.Netty4NioSocketChannel
org.elasticsearch.transport.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, java.lang.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
    CopyBytesSocketChannel()  
  • 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 readFromSocketChannel​(java.nio.channels.SocketChannel socketChannel, java.nio.ByteBuffer ioBuffer)  
    protected int writeToSocketChannel​(java.nio.channels.SocketChannel socketChannel, java.nio.ByteBuffer ioBuffer)  

    Methods inherited from class org.elasticsearch.transport.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, 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

  • Method Details

    • doWrite

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

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

      protected int writeToSocketChannel​(java.nio.channels.SocketChannel socketChannel, java.nio.ByteBuffer ioBuffer) throws java.io.IOException
      Throws:
      java.io.IOException
    • readFromSocketChannel

      protected int readFromSocketChannel​(java.nio.channels.SocketChannel socketChannel, java.nio.ByteBuffer ioBuffer) throws java.io.IOException
      Throws:
      java.io.IOException