Class 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 io.netty.channel.socket.nio.NioSocketChannel
    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
    • 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 io.netty.channel.socket.nio.NioSocketChannel

        config, doBind, doClose, doConnect, doDisconnect, doFinishConnect, doShutdownOutput, doWriteBytes, doWriteFileRegion, isActive, isInputShutdown, isInputShutdown0, isOutputShutdown, isShutdown, javaChannel, 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 Detail

      • CopyBytesSocketChannel

        public CopyBytesSocketChannel()
    • Method Detail

      • 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