Package io.netty5.channel.epoll
Class EpollDatagramChannel
- java.lang.Object
-
- io.netty5.util.DefaultAttributeMap
-
- io.netty5.channel.AbstractChannel<P,SocketAddress,SocketAddress>
-
- io.netty5.channel.epoll.EpollDatagramChannel
-
- All Implemented Interfaces:
io.netty5.channel.Channel,io.netty5.channel.ChannelOutboundInvoker,io.netty5.channel.IoHandle,io.netty5.channel.socket.DatagramChannel,io.netty5.channel.unix.UnixChannel,io.netty5.util.AttributeMap,io.netty5.util.concurrent.FuturePromiseFactory,Comparable<io.netty5.channel.Channel>
public final class EpollDatagramChannel extends io.netty5.channel.AbstractChannel<P,SocketAddress,SocketAddress> implements io.netty5.channel.socket.DatagramChannel
DatagramChannelimplementation that uses linux EPOLL Edge-Triggered Mode for maximal performance.Available options
In addition to the options provided byDatagramChannelandUnixChannel,EpollDatagramChannelallows the following options in the option map:ChannelOptionINETINET6{@code UNIX {@link IntegerUnixChannelOption} X X X {@link RawUnixChannelOption} X X X {@link UnixChannelOption#SO_REUSEPORT} X X X {@link EpollChannelOption#IP_FREEBIND} X X - {@link EpollChannelOption#IP_RECVORIGDSTADDR} X X - {@link EpollChannelOption#MAX_DATAGRAM_PAYLOAD_SIZE} X X - {@link EpollChannelOption#UDP_GRO} X X -
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanactiveprotected LinuxSocketsocket
-
Constructor Summary
Constructors Constructor Description EpollDatagramChannel(io.netty5.channel.EventLoop eventLoop)Create a new instance which selects theProtocolFamilyto use depending on the Operation Systems default which will be chosen.EpollDatagramChannel(io.netty5.channel.EventLoop eventLoop, int fd, ProtocolFamily family)Create a new instance which selects theProtocolFamilyto use depending on the Operation Systems default which will be chosen.EpollDatagramChannel(io.netty5.channel.EventLoop eventLoop, ProtocolFamily family)Create a new instance using the givenProtocolFamily.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description io.netty5.util.concurrent.Future<Void>block(InetAddress multicastAddress, InetAddress sourceToBlock)io.netty5.util.concurrent.Future<Void>block(InetAddress multicastAddress, NetworkInterface networkInterface, InetAddress sourceToBlock)protected static voidcheckResolvable(InetSocketAddress addr)protected voidclearFlag(int flag)protected voiddoBind(SocketAddress localAddress)protected voiddoClearScheduledRead()protected voiddoClose()protected booleandoConnect(SocketAddress remoteAddress, SocketAddress localAddress, io.netty5.buffer.Buffer initialData)Connect to the remote peerprotected booleandoConnect0(SocketAddress remote, io.netty5.buffer.Buffer initialData)protected voiddoDisconnect()protected booleandoFinishConnect(SocketAddress requestedRemoteAddress)protected voiddoRead(boolean wasReadPendingAlready)protected intdoReadBytes(io.netty5.buffer.Buffer buffer)Read bytes into the givenBufferand return the amount.protected booleandoReadNow(io.netty5.channel.AbstractChannel.ReadSink readSink)protected voiddoShutdown(io.netty5.channel.ChannelShutdownDirection direction)protected intdoWriteBytes(io.netty5.buffer.Buffer buf)protected voiddoWriteNow(io.netty5.channel.AbstractChannel.WriteSink writeSink)protected longdoWriteOrSendBytes(io.netty5.buffer.Buffer data, SocketAddress remoteAddress, boolean fastOpen)Write bytes to the socket, with or without a remote address.protected io.netty5.channel.epoll.AbstractEpollChannel.ReadStateepollInReady(io.netty5.channel.AbstractChannel.ReadSink readSink)Called once EPOLLIN event is ready to be processedio.netty5.channel.unix.FileDescriptorfd()protected booleanfetchLocalAddress()protected ObjectfilterOutboundMessage(Object msg)protected <T> TgetExtendedOption(io.netty5.channel.ChannelOption<T> option)booleanisActive()booleanisConnected()protected booleanisExtendedOptionSupported(io.netty5.channel.ChannelOption<?> option)booleanisOpen()static booleanisSegmentedDatagramPacketSupported()ReturnstrueifSegmentedDatagramPacketis supported natively.booleanisShutdown(io.netty5.channel.ChannelShutdownDirection direction)protected static booleanisSoErrorZero(io.netty5.channel.unix.Socket fd)protected booleanisWriteFlushedScheduled()io.netty5.util.concurrent.Future<Void>joinGroup(InetAddress multicastAddress)io.netty5.util.concurrent.Future<Void>joinGroup(InetAddress multicastAddress, NetworkInterface networkInterface, InetAddress source)io.netty5.util.concurrent.Future<Void>leaveGroup(InetAddress multicastAddress)io.netty5.util.concurrent.Future<Void>leaveGroup(InetAddress multicastAddress, NetworkInterface networkInterface, InetAddress source)protected SocketAddresslocalAddress0()protected io.netty5.buffer.BuffernewDirectBuffer(io.netty5.buffer.Buffer buf)Returns an off-heap copy of, and then closes, the givenBuffer.protected io.netty5.buffer.BuffernewDirectBuffer(io.netty5.util.Resource<?> holder, io.netty5.buffer.Buffer buf)Returns an off-heap copy of the givenBuffer, and then closes theholderunder the assumption that it owned (or was itself) the buffer.protected io.netty5.buffer.BufferAllocatorreadBufferAllocator()protected voidreadLoopComplete()protected io.netty5.channel.epoll.EpollRegistrationregistration()protected SocketAddressremoteAddress0()protected <T> voidsetExtendedOption(io.netty5.channel.ChannelOption<T> option, T value)protected voidsetFlag(int flag)protected voidwriteLoopComplete(boolean allWritten)-
Methods inherited from class io.netty5.channel.AbstractChannel
bufferAllocator, cacheAddresses, closeFuture, closeTransport, compareTo, equals, executor, finishConnect, getOption, hashCode, id, isConnectPending, isOptionSupported, isReadPending, isRegistered, isSupportingDisconnect, localAddress, newChannelPipeline, newSupportedIdentityOptionsSet, parent, pipeline, prepareToClose, readHandle, readIfIsAutoRead, readNow, remoteAddress, setOption, shutdownReadSide, toString, validateEventLoopGroup, validateFileRegion, writableBytes, writeFlushed, writeFlushedNow, writeHandle
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface io.netty5.channel.Channel
bind, bufferAllocator, close, closeFuture, connect, connect, deregister, disconnect, executor, flush, getOption, id, isOpen, isOptionSupported, isWritable, localAddress, parent, pipeline, read, read, register, remoteAddress, sendOutboundEvent, setOption, shutdown, writableBytes, write, writeAndFlush
-
Methods inherited from interface io.netty5.channel.ChannelOutboundInvoker
newFailedFuture, newPromise, newSucceededFuture, newSucceededFuture
-
Methods inherited from interface java.lang.Comparable
compareTo
-
-
-
-
Field Detail
-
socket
protected final LinuxSocket socket
-
active
protected volatile boolean active
-
-
Constructor Detail
-
EpollDatagramChannel
public EpollDatagramChannel(io.netty5.channel.EventLoop eventLoop)
Create a new instance which selects theProtocolFamilyto use depending on the Operation Systems default which will be chosen.
-
EpollDatagramChannel
public EpollDatagramChannel(io.netty5.channel.EventLoop eventLoop, ProtocolFamily family)Create a new instance using the givenProtocolFamily. Ifnullis used it will depend on the Operation Systems default which will be chosen.
-
EpollDatagramChannel
public EpollDatagramChannel(io.netty5.channel.EventLoop eventLoop, int fd, ProtocolFamily family)Create a new instance which selects theProtocolFamilyto use depending on the Operation Systems default which will be chosen.
-
-
Method Detail
-
isSegmentedDatagramPacketSupported
public static boolean isSegmentedDatagramPacketSupported()
ReturnstrueifSegmentedDatagramPacketis supported natively.- Returns:
trueif supported,falseotherwise.
-
isActive
public boolean isActive()
- Specified by:
isActivein interfaceio.netty5.channel.Channel
-
isConnected
public boolean isConnected()
- Specified by:
isConnectedin interfaceio.netty5.channel.socket.DatagramChannel
-
joinGroup
public io.netty5.util.concurrent.Future<Void> joinGroup(InetAddress multicastAddress)
- Specified by:
joinGroupin interfaceio.netty5.channel.socket.DatagramChannel
-
joinGroup
public io.netty5.util.concurrent.Future<Void> joinGroup(InetAddress multicastAddress, NetworkInterface networkInterface, InetAddress source)
- Specified by:
joinGroupin interfaceio.netty5.channel.socket.DatagramChannel
-
leaveGroup
public io.netty5.util.concurrent.Future<Void> leaveGroup(InetAddress multicastAddress)
- Specified by:
leaveGroupin interfaceio.netty5.channel.socket.DatagramChannel
-
leaveGroup
public io.netty5.util.concurrent.Future<Void> leaveGroup(InetAddress multicastAddress, NetworkInterface networkInterface, InetAddress source)
- Specified by:
leaveGroupin interfaceio.netty5.channel.socket.DatagramChannel
-
block
public io.netty5.util.concurrent.Future<Void> block(InetAddress multicastAddress, NetworkInterface networkInterface, InetAddress sourceToBlock)
- Specified by:
blockin interfaceio.netty5.channel.socket.DatagramChannel
-
block
public io.netty5.util.concurrent.Future<Void> block(InetAddress multicastAddress, InetAddress sourceToBlock)
- Specified by:
blockin interfaceio.netty5.channel.socket.DatagramChannel
-
doShutdown
protected void doShutdown(io.netty5.channel.ChannelShutdownDirection direction)
- Specified by:
doShutdownin classio.netty5.channel.AbstractChannel<io.netty5.channel.unix.UnixChannel,SocketAddress,SocketAddress>
-
isShutdown
public boolean isShutdown(io.netty5.channel.ChannelShutdownDirection direction)
- Specified by:
isShutdownin interfaceio.netty5.channel.Channel
-
doBind
protected void doBind(SocketAddress localAddress) throws Exception
- Throws:
Exception
-
doWriteNow
protected void doWriteNow(io.netty5.channel.AbstractChannel.WriteSink writeSink) throws Exception- Specified by:
doWriteNowin classio.netty5.channel.AbstractChannel<io.netty5.channel.unix.UnixChannel,SocketAddress,SocketAddress>- Throws:
Exception
-
filterOutboundMessage
protected Object filterOutboundMessage(Object msg)
- Overrides:
filterOutboundMessagein classio.netty5.channel.AbstractChannel<io.netty5.channel.unix.UnixChannel,SocketAddress,SocketAddress>
-
doConnect
protected boolean doConnect(SocketAddress remoteAddress, SocketAddress localAddress, io.netty5.buffer.Buffer initialData) throws Exception
Connect to the remote peer- Throws:
Exception
-
epollInReady
protected io.netty5.channel.epoll.AbstractEpollChannel.ReadState epollInReady(io.netty5.channel.AbstractChannel.ReadSink readSink) throws ExceptionCalled once EPOLLIN event is ready to be processed- Throws:
Exception
-
getExtendedOption
protected <T> T getExtendedOption(io.netty5.channel.ChannelOption<T> option)
-
setExtendedOption
protected <T> void setExtendedOption(io.netty5.channel.ChannelOption<T> option, T value)
-
isExtendedOptionSupported
protected boolean isExtendedOptionSupported(io.netty5.channel.ChannelOption<?> option)
-
fetchLocalAddress
protected final boolean fetchLocalAddress()
-
isSoErrorZero
protected static boolean isSoErrorZero(io.netty5.channel.unix.Socket fd)
-
setFlag
protected final void setFlag(int flag) throws IOException- Throws:
IOException
-
clearFlag
protected final void clearFlag(int flag) throws IOException- Throws:
IOException
-
registration
protected final io.netty5.channel.epoll.EpollRegistration registration()
-
fd
public final io.netty5.channel.unix.FileDescriptor fd()
- Specified by:
fdin interfaceio.netty5.channel.unix.UnixChannel
-
isOpen
public final boolean isOpen()
- Specified by:
isOpenin interfaceio.netty5.channel.Channel
-
doRead
protected final void doRead(boolean wasReadPendingAlready) throws Exception- Specified by:
doReadin classio.netty5.channel.AbstractChannel<P extends io.netty5.channel.unix.UnixChannel,SocketAddress,SocketAddress>- Throws:
Exception
-
newDirectBuffer
protected final io.netty5.buffer.Buffer newDirectBuffer(io.netty5.buffer.Buffer buf)
Returns an off-heap copy of, and then closes, the givenBuffer.
-
newDirectBuffer
protected final io.netty5.buffer.Buffer newDirectBuffer(io.netty5.util.Resource<?> holder, io.netty5.buffer.Buffer buf)Returns an off-heap copy of the givenBuffer, and then closes theholderunder the assumption that it owned (or was itself) the buffer.
-
checkResolvable
protected static void checkResolvable(InetSocketAddress addr)
-
doReadBytes
protected final int doReadBytes(io.netty5.buffer.Buffer buffer) throws ExceptionRead bytes into the givenBufferand return the amount. This method does not modify the offset of the buffer.- Throws:
Exception
-
doWriteBytes
protected final int doWriteBytes(io.netty5.buffer.Buffer buf) throws Exception- Throws:
Exception
-
doWriteOrSendBytes
protected final long doWriteOrSendBytes(io.netty5.buffer.Buffer data, SocketAddress remoteAddress, boolean fastOpen) throws IOExceptionWrite bytes to the socket, with or without a remote address. Used for datagram and TCP client fast open writes.- Throws:
IOException
-
doReadNow
protected boolean doReadNow(io.netty5.channel.AbstractChannel.ReadSink readSink) throws Exception- Specified by:
doReadNowin classio.netty5.channel.AbstractChannel<P extends io.netty5.channel.unix.UnixChannel,SocketAddress,SocketAddress>- Throws:
Exception
-
readLoopComplete
protected void readLoopComplete()
- Overrides:
readLoopCompletein classio.netty5.channel.AbstractChannel<P extends io.netty5.channel.unix.UnixChannel,SocketAddress,SocketAddress>
-
isWriteFlushedScheduled
protected boolean isWriteFlushedScheduled()
- Overrides:
isWriteFlushedScheduledin classio.netty5.channel.AbstractChannel<P extends io.netty5.channel.unix.UnixChannel,SocketAddress,SocketAddress>
-
doFinishConnect
protected boolean doFinishConnect(SocketAddress requestedRemoteAddress) throws Exception
- Specified by:
doFinishConnectin classio.netty5.channel.AbstractChannel<P extends io.netty5.channel.unix.UnixChannel,SocketAddress,SocketAddress>- Throws:
Exception
-
doConnect0
protected boolean doConnect0(SocketAddress remote, io.netty5.buffer.Buffer initialData) throws Exception
- Throws:
Exception
-
localAddress0
protected final SocketAddress localAddress0()
- Specified by:
localAddress0in classio.netty5.channel.AbstractChannel<P extends io.netty5.channel.unix.UnixChannel,SocketAddress,SocketAddress>
-
remoteAddress0
protected final SocketAddress remoteAddress0()
- Specified by:
remoteAddress0in classio.netty5.channel.AbstractChannel<P extends io.netty5.channel.unix.UnixChannel,SocketAddress,SocketAddress>
-
doClearScheduledRead
protected final void doClearScheduledRead()
- Overrides:
doClearScheduledReadin classio.netty5.channel.AbstractChannel<P extends io.netty5.channel.unix.UnixChannel,SocketAddress,SocketAddress>
-
writeLoopComplete
protected void writeLoopComplete(boolean allWritten)
- Overrides:
writeLoopCompletein classio.netty5.channel.AbstractChannel<P extends io.netty5.channel.unix.UnixChannel,SocketAddress,SocketAddress>
-
readBufferAllocator
protected io.netty5.buffer.BufferAllocator readBufferAllocator()
- Overrides:
readBufferAllocatorin classio.netty5.channel.AbstractChannel<P extends io.netty5.channel.unix.UnixChannel,SocketAddress,SocketAddress>
-
-