Package io.netty.channel.epoll
Class EpollDatagramChannel
- java.lang.Object
-
- io.netty.util.DefaultAttributeMap
-
- io.netty.channel.AbstractChannel
-
- io.netty.channel.epoll.EpollDatagramChannel
-
- All Implemented Interfaces:
Channel,ChannelOutboundInvoker,DatagramChannel,UnixChannel,AttributeMap,java.lang.Comparable<Channel>
public final class EpollDatagramChannel extends AbstractChannel implements DatagramChannel
DatagramChannelimplementation that uses linux EPOLL Edge-Triggered Mode for maximal performance.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class io.netty.channel.AbstractChannel
AbstractChannel.AbstractUnsafe
-
Nested classes/interfaces inherited from interface io.netty.channel.Channel
Channel.Unsafe
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanactiveprotected LinuxSocketsocket
-
Constructor Summary
Constructors Constructor Description EpollDatagramChannel()Create a new instance which selects theSocketProtocolFamilyto use depending on the Operation Systems default which will be chosen.EpollDatagramChannel(int fd)Create a new instance which selects theSocketProtocolFamilyto use depending on the Operation Systems default which will be chosen.EpollDatagramChannel(InternetProtocolFamily family)Deprecated.EpollDatagramChannel(SocketProtocolFamily family)Create a new instance using the givenSocketProtocolFamily.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description ChannelFutureblock(java.net.InetAddress multicastAddress, java.net.InetAddress sourceToBlock)Block the given sourceToBlock address for the given multicastAddress and notifies theChannelFutureonce the operation completes.ChannelFutureblock(java.net.InetAddress multicastAddress, java.net.InetAddress sourceToBlock, ChannelPromise promise)Block the given sourceToBlock address for the given multicastAddress and notifies theChannelFutureonce the operation completes.ChannelFutureblock(java.net.InetAddress multicastAddress, java.net.NetworkInterface networkInterface, java.net.InetAddress sourceToBlock)Block the given sourceToBlock address for the given multicastAddress on the given networkInterface and notifies theChannelFutureonce the operation completes.ChannelFutureblock(java.net.InetAddress multicastAddress, java.net.NetworkInterface networkInterface, java.net.InetAddress sourceToBlock, ChannelPromise promise)Block the given sourceToBlock address for the given multicastAddress on the given networkInterface and notifies theChannelFutureonce the operation completes.protected static voidcheckResolvable(java.net.InetSocketAddress addr)EpollDatagramChannelConfigconfig()Returns the configuration of this channel.protected voiddoBeginRead()Schedule a read operation.protected voiddoBind(java.net.SocketAddress localAddress)Bind theChannelto theSocketAddressprotected voiddoClose()Close theChannelprotected booleandoConnect(java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress)Connect to the remote peerprotected voiddoDeregister()protected voiddoDisconnect()Disconnect thisChannelfrom its remote peerprotected intdoReadBytes(ByteBuf byteBuf)Read bytes into the givenByteBufand return the amount.protected voiddoRegister(ChannelPromise promise)protected voiddoWrite(ChannelOutboundBuffer in)Flush the content of the given buffer to the remote peer.protected intdoWriteBytes(ChannelOutboundBuffer in, ByteBuf buf)FileDescriptorfd()Returns theFileDescriptorthat is used by thisChannel.protected java.lang.ObjectfilterOutboundMessage(java.lang.Object msg)Invoked when a new message is added to aChannelOutboundBufferof thisAbstractChannel, so that theChannelimplementation converts the message to another.booleanisActive()Returntrueif theChannelis active and so connected.protected booleanisCompatible(EventLoop loop)Returntrueif the givenEventLoopis compatible with this instance.booleanisConnected()Returntrueif theDatagramChannelis connected to the remote peer.booleanisOpen()Returnstrueif theChannelis open and may get active laterstatic booleanisSegmentedDatagramPacketSupported()ReturnstrueifSegmentedDatagramPacketis supported natively.ChannelFuturejoinGroup(java.net.InetAddress multicastAddress)Joins a multicast group and notifies theChannelFutureonce the operation completes.ChannelFuturejoinGroup(java.net.InetAddress multicastAddress, ChannelPromise promise)Joins a multicast group and notifies theChannelFutureonce the operation completes.ChannelFuturejoinGroup(java.net.InetAddress multicastAddress, java.net.NetworkInterface networkInterface, java.net.InetAddress source)Joins the specified multicast group at the specified interface and notifies theChannelFutureonce the operation completes.ChannelFuturejoinGroup(java.net.InetAddress multicastAddress, java.net.NetworkInterface networkInterface, java.net.InetAddress source, ChannelPromise promise)Joins the specified multicast group at the specified interface and notifies theChannelFutureonce the operation completes.ChannelFuturejoinGroup(java.net.InetSocketAddress multicastAddress, java.net.NetworkInterface networkInterface)Joins the specified multicast group at the specified interface and notifies theChannelFutureonce the operation completes.ChannelFuturejoinGroup(java.net.InetSocketAddress multicastAddress, java.net.NetworkInterface networkInterface, ChannelPromise promise)Joins the specified multicast group at the specified interface and notifies theChannelFutureonce the operation completes.ChannelFutureleaveGroup(java.net.InetAddress multicastAddress)Leaves a multicast group and notifies theChannelFutureonce the operation completes.ChannelFutureleaveGroup(java.net.InetAddress multicastAddress, ChannelPromise promise)Leaves a multicast group and notifies theChannelFutureonce the operation completes.ChannelFutureleaveGroup(java.net.InetAddress multicastAddress, java.net.NetworkInterface networkInterface, java.net.InetAddress source)Leave the specified multicast group at the specified interface using the specified source and notifies theChannelFutureonce the operation completes.ChannelFutureleaveGroup(java.net.InetAddress multicastAddress, java.net.NetworkInterface networkInterface, java.net.InetAddress source, ChannelPromise promise)Leave the specified multicast group at the specified interface using the specified source and notifies theChannelFutureonce the operation completes.ChannelFutureleaveGroup(java.net.InetSocketAddress multicastAddress, java.net.NetworkInterface networkInterface)Leaves a multicast group on a specified local interface and notifies theChannelFutureonce the operation completes.ChannelFutureleaveGroup(java.net.InetSocketAddress multicastAddress, java.net.NetworkInterface networkInterface, ChannelPromise promise)Leaves a multicast group on a specified local interface and notifies theChannelFutureonce the operation completes.java.net.InetSocketAddresslocalAddress()Returns the local address where this channel is bound to.protected java.net.SocketAddresslocalAddress0()Returns theSocketAddresswhich is bound locally.ChannelMetadatametadata()protected ByteBufnewDirectBuffer(ByteBuf buf)Returns an off-heap copy of the specifiedByteBuf, and releases the original one.protected ByteBufnewDirectBuffer(java.lang.Object holder, ByteBuf buf)Returns an off-heap copy of the specifiedByteBuf, and releases the specified holder.protected io.netty.channel.epoll.AbstractEpollChannel.AbstractEpollUnsafenewUnsafe()Create a newAbstractChannel.AbstractUnsafeinstance which will be used for the life-time of theChannelprotected IoRegistrationregistration()java.net.InetSocketAddressremoteAddress()Returns the remote address where this channel is connected to.protected java.net.SocketAddressremoteAddress0()Return theSocketAddresswhich theChannelis connected to.protected voidsetFlag(int flag)-
Methods inherited from class io.netty.channel.AbstractChannel
closeFuture, compareTo, doRegister, doShutdownOutput, equals, eventLoop, hashCode, id, invalidateLocalAddress, invalidateRemoteAddress, isRegistered, maxMessagesPerWrite, newChannelPipeline, newId, parent, pipeline, toString, unsafe, validateFileRegion, voidPromise
-
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, bind, bind, bytesBeforeUnwritable, bytesBeforeWritable, close, close, closeFuture, connect, connect, connect, connect, deregister, deregister, disconnect, disconnect, eventLoop, flush, getOption, id, isOpen, isRegistered, isWritable, newFailedFuture, newProgressivePromise, newPromise, newSucceededFuture, parent, pipeline, read, setOption, unsafe, voidPromise, write, write, writeAndFlush, writeAndFlush
-
-
-
-
Field Detail
-
socket
protected final LinuxSocket socket
-
active
protected volatile boolean active
-
-
Constructor Detail
-
EpollDatagramChannel
public EpollDatagramChannel()
Create a new instance which selects theSocketProtocolFamilyto use depending on the Operation Systems default which will be chosen.
-
EpollDatagramChannel
@Deprecated public EpollDatagramChannel(InternetProtocolFamily family)
Deprecated.Create a new instance using the givenInternetProtocolFamily. Ifnullis used it will depend on the Operation Systems default which will be chosen.
-
EpollDatagramChannel
public EpollDatagramChannel(SocketProtocolFamily family)
Create a new instance using the givenSocketProtocolFamily. Ifnullis used it will depend on the Operation Systems default which will be chosen.
-
EpollDatagramChannel
public EpollDatagramChannel(int fd)
Create a new instance which selects theSocketProtocolFamilyto 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.
-
remoteAddress
public java.net.InetSocketAddress remoteAddress()
Description copied from interface:ChannelReturns the remote address where this channel is connected to. The returnedSocketAddressis supposed to be down-cast into more concrete type such asInetSocketAddressto retrieve the detailed information.- Specified by:
remoteAddressin interfaceChannel- Specified by:
remoteAddressin interfaceDatagramChannel- Overrides:
remoteAddressin classAbstractChannel- Returns:
- the remote address of this channel.
nullif this channel is not connected. If this channel is not connected but it can receive messages from arbitrary remote addresses (e.g.DatagramChannel, useDefaultAddressedEnvelope.recipient()to determine the origination of the received message as this method will returnnull.
-
localAddress
public java.net.InetSocketAddress localAddress()
Description copied from interface:ChannelReturns the local address where this channel is bound to. The returnedSocketAddressis supposed to be down-cast into more concrete type such asInetSocketAddressto retrieve the detailed information.- Specified by:
localAddressin interfaceChannel- Specified by:
localAddressin interfaceDatagramChannel- Overrides:
localAddressin classAbstractChannel- Returns:
- the local address of this channel.
nullif this channel is not bound.
-
metadata
public ChannelMetadata metadata()
Description copied from interface:Channel
-
isActive
public boolean isActive()
Description copied from interface:ChannelReturntrueif theChannelis active and so connected.
-
isConnected
public boolean isConnected()
Description copied from interface:DatagramChannelReturntrueif theDatagramChannelis connected to the remote peer.- Specified by:
isConnectedin interfaceDatagramChannel
-
joinGroup
public ChannelFuture joinGroup(java.net.InetAddress multicastAddress)
Description copied from interface:DatagramChannelJoins a multicast group and notifies theChannelFutureonce the operation completes.- Specified by:
joinGroupin interfaceDatagramChannel
-
joinGroup
public ChannelFuture joinGroup(java.net.InetAddress multicastAddress, ChannelPromise promise)
Description copied from interface:DatagramChannelJoins a multicast group and notifies theChannelFutureonce the operation completes. The givenChannelFuturewill be notified and also returned.- Specified by:
joinGroupin interfaceDatagramChannel
-
joinGroup
public ChannelFuture joinGroup(java.net.InetSocketAddress multicastAddress, java.net.NetworkInterface networkInterface)
Description copied from interface:DatagramChannelJoins the specified multicast group at the specified interface and notifies theChannelFutureonce the operation completes.- Specified by:
joinGroupin interfaceDatagramChannel
-
joinGroup
public ChannelFuture joinGroup(java.net.InetSocketAddress multicastAddress, java.net.NetworkInterface networkInterface, ChannelPromise promise)
Description copied from interface:DatagramChannelJoins the specified multicast group at the specified interface and notifies theChannelFutureonce the operation completes. The givenChannelFuturewill be notified and also returned.- Specified by:
joinGroupin interfaceDatagramChannel
-
joinGroup
public ChannelFuture joinGroup(java.net.InetAddress multicastAddress, java.net.NetworkInterface networkInterface, java.net.InetAddress source)
Description copied from interface:DatagramChannelJoins the specified multicast group at the specified interface and notifies theChannelFutureonce the operation completes.- Specified by:
joinGroupin interfaceDatagramChannel
-
joinGroup
public ChannelFuture joinGroup(java.net.InetAddress multicastAddress, java.net.NetworkInterface networkInterface, java.net.InetAddress source, ChannelPromise promise)
Description copied from interface:DatagramChannelJoins the specified multicast group at the specified interface and notifies theChannelFutureonce the operation completes. The givenChannelFuturewill be notified and also returned.- Specified by:
joinGroupin interfaceDatagramChannel
-
leaveGroup
public ChannelFuture leaveGroup(java.net.InetAddress multicastAddress)
Description copied from interface:DatagramChannelLeaves a multicast group and notifies theChannelFutureonce the operation completes.- Specified by:
leaveGroupin interfaceDatagramChannel
-
leaveGroup
public ChannelFuture leaveGroup(java.net.InetAddress multicastAddress, ChannelPromise promise)
Description copied from interface:DatagramChannelLeaves a multicast group and notifies theChannelFutureonce the operation completes. The givenChannelFuturewill be notified and also returned.- Specified by:
leaveGroupin interfaceDatagramChannel
-
leaveGroup
public ChannelFuture leaveGroup(java.net.InetSocketAddress multicastAddress, java.net.NetworkInterface networkInterface)
Description copied from interface:DatagramChannelLeaves a multicast group on a specified local interface and notifies theChannelFutureonce the operation completes.- Specified by:
leaveGroupin interfaceDatagramChannel
-
leaveGroup
public ChannelFuture leaveGroup(java.net.InetSocketAddress multicastAddress, java.net.NetworkInterface networkInterface, ChannelPromise promise)
Description copied from interface:DatagramChannelLeaves a multicast group on a specified local interface and notifies theChannelFutureonce the operation completes. The givenChannelFuturewill be notified and also returned.- Specified by:
leaveGroupin interfaceDatagramChannel
-
leaveGroup
public ChannelFuture leaveGroup(java.net.InetAddress multicastAddress, java.net.NetworkInterface networkInterface, java.net.InetAddress source)
Description copied from interface:DatagramChannelLeave the specified multicast group at the specified interface using the specified source and notifies theChannelFutureonce the operation completes.- Specified by:
leaveGroupin interfaceDatagramChannel
-
leaveGroup
public ChannelFuture leaveGroup(java.net.InetAddress multicastAddress, java.net.NetworkInterface networkInterface, java.net.InetAddress source, ChannelPromise promise)
Description copied from interface:DatagramChannelLeave the specified multicast group at the specified interface using the specified source and notifies theChannelFutureonce the operation completes. The givenChannelFuturewill be notified and also returned.- Specified by:
leaveGroupin interfaceDatagramChannel
-
block
public ChannelFuture block(java.net.InetAddress multicastAddress, java.net.NetworkInterface networkInterface, java.net.InetAddress sourceToBlock)
Description copied from interface:DatagramChannelBlock the given sourceToBlock address for the given multicastAddress on the given networkInterface and notifies theChannelFutureonce the operation completes. The givenChannelFuturewill be notified and also returned.- Specified by:
blockin interfaceDatagramChannel
-
block
public ChannelFuture block(java.net.InetAddress multicastAddress, java.net.NetworkInterface networkInterface, java.net.InetAddress sourceToBlock, ChannelPromise promise)
Description copied from interface:DatagramChannelBlock the given sourceToBlock address for the given multicastAddress on the given networkInterface and notifies theChannelFutureonce the operation completes. The givenChannelFuturewill be notified and also returned.- Specified by:
blockin interfaceDatagramChannel
-
block
public ChannelFuture block(java.net.InetAddress multicastAddress, java.net.InetAddress sourceToBlock)
Description copied from interface:DatagramChannelBlock the given sourceToBlock address for the given multicastAddress and notifies theChannelFutureonce the operation completes. The givenChannelFuturewill be notified and also returned.- Specified by:
blockin interfaceDatagramChannel
-
block
public ChannelFuture block(java.net.InetAddress multicastAddress, java.net.InetAddress sourceToBlock, ChannelPromise promise)
Description copied from interface:DatagramChannelBlock the given sourceToBlock address for the given multicastAddress and notifies theChannelFutureonce the operation completes. The givenChannelFuturewill be notified and also returned.- Specified by:
blockin interfaceDatagramChannel
-
newUnsafe
protected io.netty.channel.epoll.AbstractEpollChannel.AbstractEpollUnsafe newUnsafe()
Description copied from class:AbstractChannelCreate a newAbstractChannel.AbstractUnsafeinstance which will be used for the life-time of theChannel
-
doBind
protected void doBind(java.net.SocketAddress localAddress) throws java.lang.ExceptionDescription copied from class:AbstractChannelBind theChannelto theSocketAddress- Throws:
java.lang.Exception
-
doWrite
protected void doWrite(ChannelOutboundBuffer in) throws java.lang.Exception
Description copied from class:AbstractChannelFlush the content of the given buffer to the remote peer.- Specified by:
doWritein classAbstractChannel- Throws:
java.lang.Exception
-
filterOutboundMessage
protected java.lang.Object filterOutboundMessage(java.lang.Object msg)
Description copied from class:AbstractChannelInvoked when a new message is added to aChannelOutboundBufferof thisAbstractChannel, so that theChannelimplementation converts the message to another. (e.g. heap buffer -> direct buffer)- Overrides:
filterOutboundMessagein classAbstractChannel
-
config
public EpollDatagramChannelConfig config()
Description copied from interface:ChannelReturns the configuration of this channel.- Specified by:
configin interfaceChannel- Specified by:
configin interfaceDatagramChannel
-
doDisconnect
protected void doDisconnect() throws java.lang.ExceptionDescription copied from class:AbstractChannelDisconnect thisChannelfrom its remote peer- Throws:
java.lang.Exception
-
doConnect
protected boolean doConnect(java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress) throws java.lang.ExceptionConnect to the remote peer- Throws:
java.lang.Exception
-
doClose
protected void doClose() throws java.lang.ExceptionDescription copied from class:AbstractChannelClose theChannel- Throws:
java.lang.Exception
-
setFlag
protected void setFlag(int flag) throws java.io.IOException- Throws:
java.io.IOException
-
registration
protected final IoRegistration registration()
-
fd
public final FileDescriptor fd()
Description copied from interface:UnixChannelReturns theFileDescriptorthat is used by thisChannel.- Specified by:
fdin interfaceUnixChannel
-
isOpen
public boolean isOpen()
Description copied from interface:ChannelReturnstrueif theChannelis open and may get active later
-
doDeregister
protected void doDeregister() throws java.lang.ExceptionDescription copied from class:AbstractChannel- Overrides:
doDeregisterin classAbstractChannel- Throws:
java.lang.Exception
-
isCompatible
protected boolean isCompatible(EventLoop loop)
Description copied from class:AbstractChannelReturntrueif the givenEventLoopis compatible with this instance.- Specified by:
isCompatiblein classAbstractChannel
-
doBeginRead
protected void doBeginRead() throws java.lang.ExceptionDescription copied from class:AbstractChannelSchedule a read operation.- Specified by:
doBeginReadin classAbstractChannel- Throws:
java.lang.Exception
-
doRegister
protected void doRegister(ChannelPromise promise)
Description copied from class:AbstractChannelIs called after theChannelis registered with itsEventLoopas part of the register process. Subclasses may override this method- Overrides:
doRegisterin classAbstractChannel- Parameters:
promise-ChannelPromisethat must be notified once done to continue the registration.
-
newDirectBuffer
protected final ByteBuf newDirectBuffer(ByteBuf buf)
Returns an off-heap copy of the specifiedByteBuf, and releases the original one.
-
checkResolvable
protected static void checkResolvable(java.net.InetSocketAddress addr)
-
doReadBytes
protected final int doReadBytes(ByteBuf byteBuf) throws java.lang.Exception
Read bytes into the givenByteBufand return the amount.- Throws:
java.lang.Exception
-
doWriteBytes
protected final int doWriteBytes(ChannelOutboundBuffer in, ByteBuf buf) throws java.lang.Exception
- Throws:
java.lang.Exception
-
localAddress0
protected java.net.SocketAddress localAddress0()
Description copied from class:AbstractChannelReturns theSocketAddresswhich is bound locally.- Specified by:
localAddress0in classAbstractChannel
-
remoteAddress0
protected java.net.SocketAddress remoteAddress0()
Description copied from class:AbstractChannelReturn theSocketAddresswhich theChannelis connected to.- Specified by:
remoteAddress0in classAbstractChannel
-
-