Package io.netty.channel.epoll
Class EpollSocketChannelConfig
java.lang.Object
io.netty.channel.DefaultChannelConfig
io.netty.channel.epoll.EpollChannelConfig
io.netty.channel.epoll.EpollSocketChannelConfig
- All Implemented Interfaces:
ChannelConfig
,DuplexChannelConfig
,SocketChannelConfig
public final class EpollSocketChannelConfig
extends EpollChannelConfig
implements SocketChannelConfig
-
Field Summary
FieldsFields inherited from class io.netty.channel.DefaultChannelConfig
channel
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a new instance. -
Method Summary
Modifier and TypeMethodDescriptionprivate void
<T> T
getOption
(ChannelOption<T> option) Return the value of the givenChannelOption
Map
<ChannelOption<?>, Object> Return all setChannelOption
's.int
Gets theStandardSocketOptions.SO_RCVBUF
option.int
Gets theStandardSocketOptions.SO_SNDBUF
option.int
Get theSO_BUSY_POLL
option on the socket.int
Gets theStandardSocketOptions.SO_LINGER
option.int
Get theTCP_KEEPCNT
option on the socket.int
Get theTCP_KEEPIDLE
option on the socket.int
Get theTCP_KEEPINTVL
option on the socket.long
Get theTCP_NOTSENT_LOWAT
option on the socket.int
Get theTCP_USER_TIMEOUT
option on the socket.int
Gets theStandardSocketOptions.IP_TOS
option.boolean
Returnstrue
if and only if the channel should not close itself when its remote peer shuts down output to make the connection half-closed.boolean
boolean
Gets theStandardSocketOptions.SO_KEEPALIVE
option.boolean
Gets theStandardSocketOptions.SO_REUSEADDR
option.boolean
Get theTCP_CORK
option on the socket.boolean
Returnstrue
if TCP fast open is enabled,false
otherwise.boolean
Gets theStandardSocketOptions.TCP_NODELAY
option.boolean
setAllocator
(ByteBufAllocator allocator) Set theByteBufAllocator
which is used for the channel to allocate buffers.setAllowHalfClosure
(boolean allowHalfClosure) Sets whether the channel should not close itself when its remote peer shuts down output to make the connection half-closed.setAutoClose
(boolean autoClose) Sets whether theChannel
should be closed automatically and immediately on write failure.setAutoRead
(boolean autoRead) Sets ifChannelHandlerContext.read()
will be invoked automatically so that a user application doesn't need to call it at all.setConnectTimeoutMillis
(int connectTimeoutMillis) Sets the connect timeout of the channel in milliseconds.setEpollMode
(EpollMode mode) Set theEpollMode
used.setIpTransparent
(boolean transparent) setKeepAlive
(boolean keepAlive) Sets theStandardSocketOptions.SO_KEEPALIVE
option.setMaxMessagesPerRead
(int maxMessagesPerRead) Deprecated.setMessageSizeEstimator
(MessageSizeEstimator estimator) Set theMessageSizeEstimator
which is used for the channel to detect the size of a message.<T> boolean
setOption
(ChannelOption<T> option, T value) Sets a configuration property with the specified name and value.setPerformancePreferences
(int connectionTime, int latency, int bandwidth) Sets the performance preferences as specified inSocket.setPerformancePreferences(int, int, int)
.setReceiveBufferSize
(int receiveBufferSize) Sets theStandardSocketOptions.SO_RCVBUF
option.setRecvByteBufAllocator
(RecvByteBufAllocator allocator) Set theRecvByteBufAllocator
which is used for the channel to allocate receive buffers.setReuseAddress
(boolean reuseAddress) Sets theStandardSocketOptions.SO_REUSEADDR
option.setSendBufferSize
(int sendBufferSize) Sets theStandardSocketOptions.SO_SNDBUF
option.setSoBusyPoll
(int loopMicros) Set theSO_BUSY_POLL
option on the socket.setSoLinger
(int soLinger) Sets theStandardSocketOptions.SO_LINGER
option.setTcpCork
(boolean tcpCork) Set theTCP_CORK
option on the socket.setTcpFastOpenConnect
(boolean fastOpenConnect) Enables client TCP fast open.setTcpKeepCnt
(int probes) Set theTCP_KEEPCNT
option on the socket.setTcpKeepCntl
(int probes) Deprecated.setTcpKeepIdle
(int seconds) Set theTCP_KEEPIDLE
option on the socket.setTcpKeepIntvl
(int seconds) Set theTCP_KEEPINTVL
option on the socket.setTcpMd5Sig
(Map<InetAddress, byte[]> keys) Set theTCP_MD5SIG
option on the socket.setTcpNoDelay
(boolean tcpNoDelay) Sets theStandardSocketOptions.TCP_NODELAY
option.setTcpNotSentLowAt
(long tcpNotSentLowAt) Set theTCP_NOTSENT_LOWAT
option on the socket.setTcpQuickAck
(boolean quickAck) Set theTCP_QUICKACK
option on the socket.setTcpUserTimeout
(int milliseconds) Set theTCP_USER_TIMEOUT
option on the socket.setTrafficClass
(int trafficClass) Sets theStandardSocketOptions.IP_TOS
option.setWriteBufferHighWaterMark
(int writeBufferHighWaterMark) Deprecated.setWriteBufferLowWaterMark
(int writeBufferLowWaterMark) Deprecated.setWriteBufferWaterMark
(WriteBufferWaterMark writeBufferWaterMark) Set theWriteBufferWaterMark
which is used for setting the high and low water mark of the write buffer.setWriteSpinCount
(int writeSpinCount) Sets the maximum loop count for a write operation untilWritableByteChannel.write(ByteBuffer)
returns a non-zero value.Methods inherited from class io.netty.channel.epoll.EpollChannelConfig
autoReadCleared, getEpollMode, getMaxBytesPerGatheringWrite, setMaxBytesPerGatheringWrite, socket
Methods inherited from class io.netty.channel.DefaultChannelConfig
getAllocator, getConnectTimeoutMillis, getMaxMessagesPerRead, getMaxMessagesPerWrite, getMessageSizeEstimator, getOptions, getRecvByteBufAllocator, getWriteBufferHighWaterMark, getWriteBufferLowWaterMark, getWriteBufferWaterMark, getWriteSpinCount, isAutoClose, isAutoRead, setMaxMessagesPerWrite, setOptions, validate
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface io.netty.channel.ChannelConfig
getAllocator, getConnectTimeoutMillis, getMaxMessagesPerRead, getMessageSizeEstimator, getRecvByteBufAllocator, getWriteBufferHighWaterMark, getWriteBufferLowWaterMark, getWriteBufferWaterMark, getWriteSpinCount, isAutoClose, isAutoRead, setOptions
-
Field Details
-
allowHalfClosure
private volatile boolean allowHalfClosure -
tcpFastopen
private volatile boolean tcpFastopen
-
-
Constructor Details
-
EpollSocketChannelConfig
EpollSocketChannelConfig(EpollSocketChannel channel) Creates a new instance.
-
-
Method Details
-
getOptions
Description copied from interface:ChannelConfig
Return all setChannelOption
's.- Specified by:
getOptions
in interfaceChannelConfig
- Overrides:
getOptions
in classEpollChannelConfig
-
getOption
Description copied from interface:ChannelConfig
Return the value of the givenChannelOption
- Specified by:
getOption
in interfaceChannelConfig
- Overrides:
getOption
in classEpollChannelConfig
-
setOption
Description copied from interface:ChannelConfig
Sets a configuration property with the specified name and value. To override this method properly, you must call the super class:public boolean setOption(ChannelOption<T> option, T value) { if (super.setOption(option, value)) { return true; } if (option.equals(additionalOption)) { .... return true; } return false; }
- Specified by:
setOption
in interfaceChannelConfig
- Overrides:
setOption
in classEpollChannelConfig
- Returns:
true
if and only if the property has been set
-
getReceiveBufferSize
public int getReceiveBufferSize()Description copied from interface:SocketChannelConfig
Gets theStandardSocketOptions.SO_RCVBUF
option.- Specified by:
getReceiveBufferSize
in interfaceSocketChannelConfig
-
getSendBufferSize
public int getSendBufferSize()Description copied from interface:SocketChannelConfig
Gets theStandardSocketOptions.SO_SNDBUF
option.- Specified by:
getSendBufferSize
in interfaceSocketChannelConfig
-
getSoLinger
public int getSoLinger()Description copied from interface:SocketChannelConfig
Gets theStandardSocketOptions.SO_LINGER
option.- Specified by:
getSoLinger
in interfaceSocketChannelConfig
-
getTrafficClass
public int getTrafficClass()Description copied from interface:SocketChannelConfig
Gets theStandardSocketOptions.IP_TOS
option.- Specified by:
getTrafficClass
in interfaceSocketChannelConfig
-
isKeepAlive
public boolean isKeepAlive()Description copied from interface:SocketChannelConfig
Gets theStandardSocketOptions.SO_KEEPALIVE
option.- Specified by:
isKeepAlive
in interfaceSocketChannelConfig
-
isReuseAddress
public boolean isReuseAddress()Description copied from interface:SocketChannelConfig
Gets theStandardSocketOptions.SO_REUSEADDR
option.- Specified by:
isReuseAddress
in interfaceSocketChannelConfig
-
isTcpNoDelay
public boolean isTcpNoDelay()Description copied from interface:SocketChannelConfig
Gets theStandardSocketOptions.TCP_NODELAY
option. Please note that the default value of this option istrue
unlike the operating system default (false
). However, for some buggy platforms, such as Android, that shows erratic behavior with Nagle's algorithm disabled, the default value remains to befalse
.- Specified by:
isTcpNoDelay
in interfaceSocketChannelConfig
-
isTcpCork
public boolean isTcpCork()Get theTCP_CORK
option on the socket. Seeman 7 tcp
for more details. -
getSoBusyPoll
public int getSoBusyPoll()Get theSO_BUSY_POLL
option on the socket. Seeman 7 tcp
for more details. -
getTcpNotSentLowAt
public long getTcpNotSentLowAt()Get theTCP_NOTSENT_LOWAT
option on the socket. Seeman 7 tcp
for more details.- Returns:
- value is a uint32_t
-
getTcpKeepIdle
public int getTcpKeepIdle()Get theTCP_KEEPIDLE
option on the socket. Seeman 7 tcp
for more details. -
getTcpKeepIntvl
public int getTcpKeepIntvl()Get theTCP_KEEPINTVL
option on the socket. Seeman 7 tcp
for more details. -
getTcpKeepCnt
public int getTcpKeepCnt()Get theTCP_KEEPCNT
option on the socket. Seeman 7 tcp
for more details. -
getTcpUserTimeout
public int getTcpUserTimeout()Get theTCP_USER_TIMEOUT
option on the socket. Seeman 7 tcp
for more details. -
setKeepAlive
Description copied from interface:SocketChannelConfig
Sets theStandardSocketOptions.SO_KEEPALIVE
option.- Specified by:
setKeepAlive
in interfaceSocketChannelConfig
-
setPerformancePreferences
public EpollSocketChannelConfig setPerformancePreferences(int connectionTime, int latency, int bandwidth) Description copied from interface:SocketChannelConfig
Sets the performance preferences as specified inSocket.setPerformancePreferences(int, int, int)
.- Specified by:
setPerformancePreferences
in interfaceSocketChannelConfig
-
setReceiveBufferSize
Description copied from interface:SocketChannelConfig
Sets theStandardSocketOptions.SO_RCVBUF
option.- Specified by:
setReceiveBufferSize
in interfaceSocketChannelConfig
-
setReuseAddress
Description copied from interface:SocketChannelConfig
Sets theStandardSocketOptions.SO_REUSEADDR
option.- Specified by:
setReuseAddress
in interfaceSocketChannelConfig
-
setSendBufferSize
Description copied from interface:SocketChannelConfig
Sets theStandardSocketOptions.SO_SNDBUF
option.- Specified by:
setSendBufferSize
in interfaceSocketChannelConfig
-
setSoLinger
Description copied from interface:SocketChannelConfig
Sets theStandardSocketOptions.SO_LINGER
option.- Specified by:
setSoLinger
in interfaceSocketChannelConfig
-
setTcpNoDelay
Description copied from interface:SocketChannelConfig
Sets theStandardSocketOptions.TCP_NODELAY
option. Please note that the default value of this option istrue
unlike the operating system default (false
). However, for some buggy platforms, such as Android, that shows erratic behavior with Nagle's algorithm disabled, the default value remains to befalse
.- Specified by:
setTcpNoDelay
in interfaceSocketChannelConfig
-
setTcpCork
Set theTCP_CORK
option on the socket. Seeman 7 tcp
for more details. -
setSoBusyPoll
Set theSO_BUSY_POLL
option on the socket. Seeman 7 tcp
for more details. -
setTcpNotSentLowAt
Set theTCP_NOTSENT_LOWAT
option on the socket. Seeman 7 tcp
for more details.- Parameters:
tcpNotSentLowAt
- is a uint32_t
-
setTrafficClass
Description copied from interface:SocketChannelConfig
Sets theStandardSocketOptions.IP_TOS
option.- Specified by:
setTrafficClass
in interfaceSocketChannelConfig
-
setTcpKeepIdle
Set theTCP_KEEPIDLE
option on the socket. Seeman 7 tcp
for more details. -
setTcpKeepIntvl
Set theTCP_KEEPINTVL
option on the socket. Seeman 7 tcp
for more details. -
setTcpKeepCntl
Deprecated. -
setTcpKeepCnt
Set theTCP_KEEPCNT
option on the socket. Seeman 7 tcp
for more details. -
setTcpUserTimeout
Set theTCP_USER_TIMEOUT
option on the socket. Seeman 7 tcp
for more details. -
isIpTransparent
public boolean isIpTransparent() -
setIpTransparent
-
setTcpMd5Sig
Set theTCP_MD5SIG
option on the socket. Seelinux/tcp.h
for more details. Keys can only be set on, not read to prevent a potential leak, as they are confidential. Allowing them being read would mean anyone with access to the channel could get them. -
setTcpQuickAck
Set theTCP_QUICKACK
option on the socket. See TCP_QUICKACK for more details. -
isTcpQuickAck
public boolean isTcpQuickAck() -
setTcpFastOpenConnect
Enables client TCP fast open.TCP_FASTOPEN_CONNECT
normally requires Linux kernel 4.11 or later, so instead we use the traditional fast open client socket mechanics that work with kernel 3.6 and later. See this LWN article for more info. -
isTcpFastOpenConnect
public boolean isTcpFastOpenConnect()Returnstrue
if TCP fast open is enabled,false
otherwise. -
isAllowHalfClosure
public boolean isAllowHalfClosure()Description copied from interface:DuplexChannelConfig
Returnstrue
if and only if the channel should not close itself when its remote peer shuts down output to make the connection half-closed. Iffalse
, the connection is closed automatically when the remote peer shuts down output.- Specified by:
isAllowHalfClosure
in interfaceDuplexChannelConfig
-
setAllowHalfClosure
Description copied from interface:DuplexChannelConfig
Sets whether the channel should not close itself when its remote peer shuts down output to make the connection half-closed. Iftrue
the connection is not closed when the remote peer shuts down output. Instead,ChannelInboundHandler.userEventTriggered(ChannelHandlerContext, Object)
is invoked with aChannelInputShutdownEvent
object. Iffalse
, the connection is closed automatically.- Specified by:
setAllowHalfClosure
in interfaceDuplexChannelConfig
- Specified by:
setAllowHalfClosure
in interfaceSocketChannelConfig
-
setConnectTimeoutMillis
Description copied from interface:ChannelConfig
Sets the connect timeout of the channel in milliseconds. If theChannel
does not support connect operation, this property is not used at all, and therefore will be ignored.- Specified by:
setConnectTimeoutMillis
in interfaceChannelConfig
- Specified by:
setConnectTimeoutMillis
in interfaceSocketChannelConfig
- Overrides:
setConnectTimeoutMillis
in classEpollChannelConfig
- Parameters:
connectTimeoutMillis
- the connect timeout in milliseconds.0
to disable.
-
setMaxMessagesPerRead
Deprecated.Description copied from class:DefaultChannelConfig
- Specified by:
setMaxMessagesPerRead
in interfaceChannelConfig
- Specified by:
setMaxMessagesPerRead
in interfaceDuplexChannelConfig
- Specified by:
setMaxMessagesPerRead
in interfaceSocketChannelConfig
- Overrides:
setMaxMessagesPerRead
in classEpollChannelConfig
-
setWriteSpinCount
Description copied from interface:ChannelConfig
Sets the maximum loop count for a write operation untilWritableByteChannel.write(ByteBuffer)
returns a non-zero value. It is similar to what a spin lock is used for in concurrency programming. It improves memory utilization and write throughput depending on the platform that JVM runs on. The default value is16
.- Specified by:
setWriteSpinCount
in interfaceChannelConfig
- Specified by:
setWriteSpinCount
in interfaceDuplexChannelConfig
- Specified by:
setWriteSpinCount
in interfaceSocketChannelConfig
- Overrides:
setWriteSpinCount
in classEpollChannelConfig
-
setAllocator
Description copied from interface:ChannelConfig
Set theByteBufAllocator
which is used for the channel to allocate buffers.- Specified by:
setAllocator
in interfaceChannelConfig
- Specified by:
setAllocator
in interfaceDuplexChannelConfig
- Specified by:
setAllocator
in interfaceSocketChannelConfig
- Overrides:
setAllocator
in classEpollChannelConfig
-
setRecvByteBufAllocator
Description copied from interface:ChannelConfig
Set theRecvByteBufAllocator
which is used for the channel to allocate receive buffers.- Specified by:
setRecvByteBufAllocator
in interfaceChannelConfig
- Specified by:
setRecvByteBufAllocator
in interfaceDuplexChannelConfig
- Specified by:
setRecvByteBufAllocator
in interfaceSocketChannelConfig
- Overrides:
setRecvByteBufAllocator
in classEpollChannelConfig
-
setAutoRead
Description copied from interface:ChannelConfig
Sets ifChannelHandlerContext.read()
will be invoked automatically so that a user application doesn't need to call it at all. The default value istrue
.- Specified by:
setAutoRead
in interfaceChannelConfig
- Specified by:
setAutoRead
in interfaceDuplexChannelConfig
- Specified by:
setAutoRead
in interfaceSocketChannelConfig
- Overrides:
setAutoRead
in classEpollChannelConfig
-
setAutoClose
Description copied from interface:ChannelConfig
Sets whether theChannel
should be closed automatically and immediately on write failure. The default istrue
.- Specified by:
setAutoClose
in interfaceChannelConfig
- Specified by:
setAutoClose
in interfaceDuplexChannelConfig
- Specified by:
setAutoClose
in interfaceSocketChannelConfig
- Overrides:
setAutoClose
in classDefaultChannelConfig
-
setWriteBufferHighWaterMark
@Deprecated public EpollSocketChannelConfig setWriteBufferHighWaterMark(int writeBufferHighWaterMark) Deprecated.Description copied from interface:ChannelConfig
Sets the high water mark of the write buffer. If the number of bytes queued in the write buffer exceeds this value,
Channel.isWritable()
will start to returnfalse
.- Specified by:
setWriteBufferHighWaterMark
in interfaceChannelConfig
- Overrides:
setWriteBufferHighWaterMark
in classEpollChannelConfig
-
setWriteBufferLowWaterMark
Deprecated.Description copied from interface:ChannelConfig
Sets the low water mark of the write buffer. Once the number of bytes queued in the write buffer exceeded the high water mark and then dropped down below this value,
Channel.isWritable()
will start to returntrue
again.- Specified by:
setWriteBufferLowWaterMark
in interfaceChannelConfig
- Overrides:
setWriteBufferLowWaterMark
in classEpollChannelConfig
-
setWriteBufferWaterMark
Description copied from interface:ChannelConfig
Set theWriteBufferWaterMark
which is used for setting the high and low water mark of the write buffer.- Specified by:
setWriteBufferWaterMark
in interfaceChannelConfig
- Specified by:
setWriteBufferWaterMark
in interfaceDuplexChannelConfig
- Specified by:
setWriteBufferWaterMark
in interfaceSocketChannelConfig
- Overrides:
setWriteBufferWaterMark
in classEpollChannelConfig
-
setMessageSizeEstimator
Description copied from interface:ChannelConfig
Set theMessageSizeEstimator
which is used for the channel to detect the size of a message.- Specified by:
setMessageSizeEstimator
in interfaceChannelConfig
- Specified by:
setMessageSizeEstimator
in interfaceDuplexChannelConfig
- Specified by:
setMessageSizeEstimator
in interfaceSocketChannelConfig
- Overrides:
setMessageSizeEstimator
in classEpollChannelConfig
-
setEpollMode
Description copied from class:EpollChannelConfig
Set theEpollMode
used. Default isEpollMode.EDGE_TRIGGERED
. If you want to useDefaultChannelConfig.isAutoRead()
false
orDefaultChannelConfig.getMaxMessagesPerRead()
and have an accurate behaviour you should useEpollMode.LEVEL_TRIGGERED
. Be aware this config setting can only be adjusted before the channel was registered.- Overrides:
setEpollMode
in classEpollChannelConfig
-
calculateMaxBytesPerGatheringWrite
private void calculateMaxBytesPerGatheringWrite()
-
setTcpKeepCnt(int)