public interface ChannelGroup extends java.util.Set<Channel>, java.lang.Comparable<ChannelGroup>
Set
that contains open Channel
s and provides
various bulk operations on them. Using ChannelGroup
, you can
categorize Channel
s into a meaningful group (e.g. on a per-service
or per-state basis.) A closed Channel
is automatically removed from
the collection, so that you don't need to worry about the life cycle of the
added Channel
. A Channel
can belong to more than one
ChannelGroup
.
Channel
s
If you need to broadcast a message to more than one Channel
, you can
add the Channel
s associated with the recipients and call write(Object)
:
ChannelGroup
recipients = newDefaultChannelGroup
(GlobalEventExecutor
.INSTANCE); recipients.add(channelA); recipients.add(channelB); .. recipients.write(Unpooled
.copiedBuffer( "Service will shut down for maintenance in 5 minutes.",CharsetUtil
.UTF_8));
ChannelGroup
If both ServerChannel
s and non-ServerChannel
s exist in the
same ChannelGroup
, any requested I/O operations on the group are
performed for the ServerChannel
s first and then for the others.
This rule is very useful when you shut down a server in one shot:
ChannelGroup
allChannels = newDefaultChannelGroup
(GlobalEventExecutor
.INSTANCE); public static void main(String[] args) throws Exception {ServerBootstrap
b = newServerBootstrap
(..); ... b.childHandler(new MyHandler()); // Start the server b.getPipeline().addLast("handler", new MyHandler());Channel
serverChannel = b.bind(..).sync(); allChannels.add(serverChannel); ... Wait until the shutdown signal reception ... // Close the serverChannel and then all accepted connections. allChannels.close().awaitUninterruptibly(); } public class MyHandler extendsChannelInboundHandlerAdapter
{@Override
public void channelActive(ChannelHandlerContext
ctx) { // closed on shutdown. allChannels.add(ctx.channel()); super.channelActive(ctx); } }
限定符和类型 | 方法和说明 |
---|---|
ChannelGroupFuture |
close()
Closes all
Channel s in this group. |
ChannelGroupFuture |
close(ChannelMatcher matcher)
Closes all
Channel s in this group that are matched by the given ChannelMatcher . |
ChannelGroupFuture |
deregister()
已过时。
This method will be removed in the next major feature release.
Deregister all
Channel s in this group from their EventLoop .
Please note that this operation is asynchronous as ChannelOutboundInvoker.deregister() is. |
ChannelGroupFuture |
deregister(ChannelMatcher matcher)
已过时。
This method will be removed in the next major feature release.
Deregister all
Channel s in this group from their EventLoop that are matched by the given
ChannelMatcher . Please note that this operation is asynchronous as ChannelOutboundInvoker.deregister() is. |
ChannelGroupFuture |
disconnect()
Disconnects all
Channel s in this group from their remote peers. |
ChannelGroupFuture |
disconnect(ChannelMatcher matcher)
Disconnects all
Channel s in this group from their remote peers,
that are matched by the given ChannelMatcher . |
Channel |
find(ChannelId id)
|
ChannelGroup |
flush()
Flush all
Channel s in this
group. |
ChannelGroup |
flush(ChannelMatcher matcher)
Flush all
Channel s in this group that are matched by the given ChannelMatcher . |
ChannelGroupFuture |
flushAndWrite(java.lang.Object message)
已过时。
Use
writeAndFlush(Object) instead. |
ChannelGroupFuture |
flushAndWrite(java.lang.Object message,
ChannelMatcher matcher)
已过时。
Use
writeAndFlush(Object, ChannelMatcher) instead. |
java.lang.String |
name()
Returns the name of this group.
|
ChannelGroupFuture |
newCloseFuture()
Returns the
ChannelGroupFuture which will be notified when all Channel s that are part of this
ChannelGroup , at the time of calling, are closed. |
ChannelGroupFuture |
newCloseFuture(ChannelMatcher matcher)
Returns the
ChannelGroupFuture which will be notified when all Channel s that are part of this
ChannelGroup , at the time of calling, are closed. |
ChannelGroupFuture |
write(java.lang.Object message)
Writes the specified
message to all Channel s in this
group. |
ChannelGroupFuture |
write(java.lang.Object message,
ChannelMatcher matcher)
Writes the specified
message to all Channel s in this
group that are matched by the given ChannelMatcher . |
ChannelGroupFuture |
write(java.lang.Object message,
ChannelMatcher matcher,
boolean voidPromise)
Writes the specified
message to all Channel s in this
group that are matched by the given ChannelMatcher . |
ChannelGroupFuture |
writeAndFlush(java.lang.Object message)
Shortcut for calling
write(Object) and flush() . |
ChannelGroupFuture |
writeAndFlush(java.lang.Object message,
ChannelMatcher matcher)
Shortcut for calling
write(Object) and flush() and only act on
Channel s that are matched by the ChannelMatcher . |
ChannelGroupFuture |
writeAndFlush(java.lang.Object message,
ChannelMatcher matcher,
boolean voidPromise)
Shortcut for calling
write(Object, ChannelMatcher, boolean) and flush() and only act on
Channel s that are matched by the ChannelMatcher . |
java.lang.String name()
ChannelGroupFuture write(java.lang.Object message)
message
to all Channel
s in this
group. If the specified message
is an instance of
ByteBuf
, it is automatically
duplicated to avoid a race
condition. The same is true for ByteBufHolder
. Please note that this operation is asynchronous as
ChannelOutboundInvoker.write(Object)
is.ChannelGroupFuture write(java.lang.Object message, ChannelMatcher matcher)
message
to all Channel
s in this
group that are matched by the given ChannelMatcher
. If the specified message
is an instance of
ByteBuf
, it is automatically
duplicated to avoid a race
condition. The same is true for ByteBufHolder
. Please note that this operation is asynchronous as
ChannelOutboundInvoker.write(Object)
is.ChannelGroupFuture
instance that notifies when
the operation is done for all channelsChannelGroupFuture write(java.lang.Object message, ChannelMatcher matcher, boolean voidPromise)
message
to all Channel
s in this
group that are matched by the given ChannelMatcher
. If the specified message
is an instance of
ByteBuf
, it is automatically
duplicated to avoid a race
condition. The same is true for ByteBufHolder
. Please note that this operation is asynchronous as
ChannelOutboundInvoker.write(Object)
is.
If voidPromise
is true
ChannelOutboundInvoker.voidPromise()
is used for the writes and so the same
restrictions to the returned ChannelGroupFuture
apply as to a void promise.ChannelGroupFuture
instance that notifies when
the operation is done for all channelsChannelGroup flush()
Channel
s in this
group. If the specified messages
are an instance of
ByteBuf
, it is automatically
duplicated to avoid a race
condition. Please note that this operation is asynchronous as
ChannelOutboundInvoker.write(Object)
is.ChannelGroupFuture
instance that notifies when
the operation is done for all channelsChannelGroup flush(ChannelMatcher matcher)
Channel
s in this group that are matched by the given ChannelMatcher
.
If the specified messages
are an instance of
ByteBuf
, it is automatically
duplicated to avoid a race
condition. Please note that this operation is asynchronous as
ChannelOutboundInvoker.write(Object)
is.ChannelGroupFuture
instance that notifies when
the operation is done for all channelsChannelGroupFuture writeAndFlush(java.lang.Object message)
write(Object)
and flush()
.@Deprecated ChannelGroupFuture flushAndWrite(java.lang.Object message)
writeAndFlush(Object)
instead.ChannelGroupFuture writeAndFlush(java.lang.Object message, ChannelMatcher matcher)
write(Object)
and flush()
and only act on
Channel
s that are matched by the ChannelMatcher
.ChannelGroupFuture writeAndFlush(java.lang.Object message, ChannelMatcher matcher, boolean voidPromise)
write(Object, ChannelMatcher, boolean)
and flush()
and only act on
Channel
s that are matched by the ChannelMatcher
.@Deprecated ChannelGroupFuture flushAndWrite(java.lang.Object message, ChannelMatcher matcher)
writeAndFlush(Object, ChannelMatcher)
instead.ChannelGroupFuture disconnect()
Channel
s in this group from their remote peers.ChannelGroupFuture
instance that notifies when
the operation is done for all channelsChannelGroupFuture disconnect(ChannelMatcher matcher)
Channel
s in this group from their remote peers,
that are matched by the given ChannelMatcher
.ChannelGroupFuture
instance that notifies when
the operation is done for all channelsChannelGroupFuture close()
Channel
s in this group. If the Channel
is
connected to a remote peer or bound to a local address, it is
automatically disconnected and unbound.ChannelGroupFuture
instance that notifies when
the operation is done for all channelsChannelGroupFuture close(ChannelMatcher matcher)
Channel
s in this group that are matched by the given ChannelMatcher
.
If the Channel
is connected to a remote peer or bound to a local address, it is
automatically disconnected and unbound.ChannelGroupFuture
instance that notifies when
the operation is done for all channels@Deprecated ChannelGroupFuture deregister()
Channel
s in this group from their EventLoop
.
Please note that this operation is asynchronous as ChannelOutboundInvoker.deregister()
is.ChannelGroupFuture
instance that notifies when
the operation is done for all channels@Deprecated ChannelGroupFuture deregister(ChannelMatcher matcher)
Channel
s in this group from their EventLoop
that are matched by the given
ChannelMatcher
. Please note that this operation is asynchronous as ChannelOutboundInvoker.deregister()
is.ChannelGroupFuture
instance that notifies when
the operation is done for all channelsChannelGroupFuture newCloseFuture()
ChannelGroupFuture
which will be notified when all Channel
s that are part of this
ChannelGroup
, at the time of calling, are closed.ChannelGroupFuture newCloseFuture(ChannelMatcher matcher)
ChannelGroupFuture
which will be notified when all Channel
s that are part of this
ChannelGroup
, at the time of calling, are closed.