Class NioDatagramChannel
- java.lang.Object
-
- org.jboss.netty.channel.AbstractChannel
-
- org.jboss.netty.channel.socket.nio.AbstractNioChannel<java.nio.channels.DatagramChannel>
-
- org.jboss.netty.channel.socket.nio.NioDatagramChannel
-
- All Implemented Interfaces:
java.lang.Comparable<Channel>
,Channel
,DatagramChannel
public class NioDatagramChannel extends AbstractNioChannel<java.nio.channels.DatagramChannel> implements DatagramChannel
Provides an NIO basedDatagramChannel
.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.jboss.netty.channel.socket.nio.AbstractNioChannel
AbstractNioChannel.WriteRequestQueue
-
-
Field Summary
Fields Modifier and Type Field Description private NioDatagramChannelConfig
config
private java.util.Map<java.net.InetAddress,java.util.List<java.nio.channels.MembershipKey>>
memberships
-
Fields inherited from class org.jboss.netty.channel.socket.nio.AbstractNioChannel
channel, currentWriteBuffer, currentWriteEvent, highWaterMarkCounter, inWriteNowLoop, remoteAddress, worker, writeBufferQueue, writeBufferSize, writeLock, writeSuspended, writeTask, writeTaskInTaskQueue
-
Fields inherited from interface org.jboss.netty.channel.Channel
OP_NONE, OP_READ, OP_READ_WRITE, OP_WRITE
-
-
Constructor Summary
Constructors Constructor Description NioDatagramChannel(ChannelFactory factory, ChannelPipeline pipeline, ChannelSink sink, NioDatagramWorker worker, InternetProtocolFamily family)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description ChannelFuture
block(java.net.InetAddress multicastAddress, java.net.InetAddress sourceToBlock)
Block the given sourceToBlock address for the given multicastAddressChannelFuture
block(java.net.InetAddress multicastAddress, java.net.NetworkInterface networkInterface, java.net.InetAddress sourceToBlock)
Block the given sourceToBlock address for the given multicastAddress on the given networkInterfaceNioDatagramChannelConfig
getConfig()
Returns the configuration of this channel.(package private) java.nio.channels.DatagramChannel
getDatagramChannel()
(package private) java.net.InetSocketAddress
getLocalSocketAddress()
(package private) java.net.InetSocketAddress
getRemoteSocketAddress()
NioDatagramWorker
getWorker()
Return theAbstractNioWorker
that handle the IO of theAbstractNioChannel
boolean
isBound()
Returnstrue
if and only if this channel is bound to a local address.boolean
isConnected()
Returnstrue
if and only if this channel is connected to a remote address.ChannelFuture
joinGroup(java.net.InetAddress multicastAddress)
Joins a multicast group.ChannelFuture
joinGroup(java.net.InetAddress multicastAddress, java.net.NetworkInterface networkInterface, java.net.InetAddress source)
Joins the specified multicast group at the specified interface using the specified source.ChannelFuture
joinGroup(java.net.InetSocketAddress multicastAddress, java.net.NetworkInterface networkInterface)
Joins the specified multicast group at the specified interface.ChannelFuture
leaveGroup(java.net.InetAddress multicastAddress)
Leaves a multicast group.ChannelFuture
leaveGroup(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.ChannelFuture
leaveGroup(java.net.InetSocketAddress multicastAddress, java.net.NetworkInterface networkInterface)
Leaves a multicast group on a specified local interface.private static java.nio.channels.DatagramChannel
openNonBlockingChannel(InternetProtocolFamily family)
protected boolean
setClosed()
Marks this channel as closed.ChannelFuture
write(java.lang.Object message, java.net.SocketAddress remoteAddress)
Sends a message to this channel asynchronously.-
Methods inherited from class org.jboss.netty.channel.socket.nio.AbstractNioChannel
getInternalInterestOps, getLocalAddress, getRemoteAddress, setInternalInterestOps
-
Methods inherited from class org.jboss.netty.channel.AbstractChannel
bind, close, compareTo, connect, disconnect, equals, getAttachment, getCloseFuture, getFactory, getId, getInterestOps, getParent, getPipeline, getSucceededFuture, getUnsupportedOperationFuture, getUserDefinedWritability, hashCode, isOpen, isReadable, isWritable, setAttachment, setInterestOps, setReadable, setUnwritable, setUserDefinedWritability, setWritable, toString, unbind, write
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.jboss.netty.channel.Channel
bind, close, connect, disconnect, getAttachment, getCloseFuture, getFactory, getId, getInterestOps, getParent, getPipeline, getUserDefinedWritability, isOpen, isReadable, isWritable, setAttachment, setInterestOps, setReadable, setUserDefinedWritability, unbind, write
-
Methods inherited from interface org.jboss.netty.channel.socket.DatagramChannel
getLocalAddress, getRemoteAddress
-
-
-
-
Field Detail
-
config
private final NioDatagramChannelConfig config
-
memberships
private java.util.Map<java.net.InetAddress,java.util.List<java.nio.channels.MembershipKey>> memberships
-
-
Constructor Detail
-
NioDatagramChannel
NioDatagramChannel(ChannelFactory factory, ChannelPipeline pipeline, ChannelSink sink, NioDatagramWorker worker, InternetProtocolFamily family)
-
-
Method Detail
-
openNonBlockingChannel
private static java.nio.channels.DatagramChannel openNonBlockingChannel(InternetProtocolFamily family)
-
getWorker
public NioDatagramWorker getWorker()
Description copied from class:AbstractNioChannel
Return theAbstractNioWorker
that handle the IO of theAbstractNioChannel
- Overrides:
getWorker
in classAbstractNioChannel<java.nio.channels.DatagramChannel>
- Returns:
- worker
-
isBound
public boolean isBound()
Description copied from interface:Channel
Returnstrue
if and only if this channel is bound to a local address.
-
isConnected
public boolean isConnected()
Description copied from interface:Channel
Returnstrue
if and only if this channel is connected to a remote address.- Specified by:
isConnected
in interfaceChannel
-
setClosed
protected boolean setClosed()
Description copied from class:AbstractChannel
Marks this channel as closed. This method is intended to be called by an internal component - please do not call it unless you know what you are doing.- Overrides:
setClosed
in classAbstractNioChannel<java.nio.channels.DatagramChannel>
- Returns:
true
if and only if this channel was not marked as closed yet
-
getConfig
public NioDatagramChannelConfig getConfig()
Description copied from interface:Channel
Returns the configuration of this channel.- Specified by:
getConfig
in interfaceChannel
- Specified by:
getConfig
in interfaceDatagramChannel
- Specified by:
getConfig
in classAbstractNioChannel<java.nio.channels.DatagramChannel>
-
getDatagramChannel
java.nio.channels.DatagramChannel getDatagramChannel()
-
joinGroup
public ChannelFuture joinGroup(java.net.InetAddress multicastAddress)
Description copied from interface:DatagramChannel
Joins a multicast group.- Specified by:
joinGroup
in interfaceDatagramChannel
-
joinGroup
public ChannelFuture joinGroup(java.net.InetSocketAddress multicastAddress, java.net.NetworkInterface networkInterface)
Description copied from interface:DatagramChannel
Joins the specified multicast group at the specified interface.- Specified by:
joinGroup
in interfaceDatagramChannel
-
joinGroup
public ChannelFuture joinGroup(java.net.InetAddress multicastAddress, java.net.NetworkInterface networkInterface, java.net.InetAddress source)
Joins the specified multicast group at the specified interface using the specified source.
-
leaveGroup
public ChannelFuture leaveGroup(java.net.InetAddress multicastAddress)
Description copied from interface:DatagramChannel
Leaves a multicast group.- Specified by:
leaveGroup
in interfaceDatagramChannel
-
leaveGroup
public ChannelFuture leaveGroup(java.net.InetSocketAddress multicastAddress, java.net.NetworkInterface networkInterface)
Description copied from interface:DatagramChannel
Leaves a multicast group on a specified local interface.- Specified by:
leaveGroup
in interfaceDatagramChannel
-
leaveGroup
public ChannelFuture leaveGroup(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.
-
block
public ChannelFuture block(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
-
block
public ChannelFuture block(java.net.InetAddress multicastAddress, java.net.InetAddress sourceToBlock)
Block the given sourceToBlock address for the given multicastAddress
-
getLocalSocketAddress
java.net.InetSocketAddress getLocalSocketAddress() throws java.lang.Exception
- Specified by:
getLocalSocketAddress
in classAbstractNioChannel<java.nio.channels.DatagramChannel>
- Throws:
java.lang.Exception
-
getRemoteSocketAddress
java.net.InetSocketAddress getRemoteSocketAddress() throws java.lang.Exception
- Specified by:
getRemoteSocketAddress
in classAbstractNioChannel<java.nio.channels.DatagramChannel>
- Throws:
java.lang.Exception
-
write
public ChannelFuture write(java.lang.Object message, java.net.SocketAddress remoteAddress)
Description copied from interface:Channel
Sends a message to this channel asynchronously. It has an additional parameter that allows a user to specify where to send the specified message instead of this channel's current remote address. If this channel was created by a connectionless transport (e.g.DatagramChannel
) and is not connected yet, you must specify non-null address. Otherwise, the write request will fail withNotYetConnectedException
and an'exceptionCaught'
event will be triggered.- Specified by:
write
in interfaceChannel
- Overrides:
write
in classAbstractChannel
- Parameters:
message
- the message to writeremoteAddress
- where to send the specified message. This method is identical toChannel.write(Object)
ifnull
is specified here.- Returns:
- the
ChannelFuture
which will be notified when the write request succeeds or fails
-
-