Package org.elasticsearch.transport
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.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.NioSocketChannelThis class is adapted fromNioSocketChannelclass 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 JavaSocketChannelis 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
-
-
Constructor Summary
Constructors Constructor Description CopyBytesSocketChannel()
-
Method Summary
Modifier and Type Method Description protected intdoReadBytes(io.netty.buffer.ByteBuf byteBuf)protected voiddoWrite(io.netty.channel.ChannelOutboundBuffer in)protected intreadFromSocketChannel(java.nio.channels.SocketChannel socketChannel, java.nio.ByteBuffer ioBuffer)protected intwriteToSocketChannel(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 java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
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
-
-
-
-
Method Detail
-
doWrite
protected void doWrite(io.netty.channel.ChannelOutboundBuffer in) throws java.lang.Exception- Overrides:
doWritein classio.netty.channel.socket.nio.NioSocketChannel- Throws:
java.lang.Exception
-
doReadBytes
protected int doReadBytes(io.netty.buffer.ByteBuf byteBuf) throws java.lang.Exception- Overrides:
doReadBytesin classio.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
-
-