public interface ChannelGroup extends java.util.Set<Channel>, java.lang.Comparable<ChannelGroup>
Set
,包含开放Channel
,并提供各种批量操作。
使用ChannelGroup
,可以将Channel
分类为有意义的组(例如,基于每个服务或每个状态)。关闭的Channel
会自动从集合中删除,以便您不必担心生命周期添加Channel
。
A Channel
可以属于多个ChannelGroup
。
Channel
如果您需要将消息广播到多个Channel
,则可以添加与收件人关联的Channel
,并呼叫write(Object)
:
ChannelGroup
recipients = new DefaultChannelGroup
(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
简化关闭过程 如果ServerChannel
和ServerChannel
都存在于同一个ChannelGroup
中 ,则该组的任何所请求的I / O操作首先针对ServerChannel
进行,然后针对其他针对ServerChannel
进行。
当您关闭一台服务器时,此规则非常有用:
ChannelGroup
allChannels = new DefaultChannelGroup
(GlobalEventExecutor
.INSTANCE);
public static void main(String[] args) throws Exception {
ServerBootstrap
b = new ServerBootstrap
(..);
...
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 extends ChannelInboundHandlerAdapter
{
@Override
public void channelActive(ChannelHandlerContext
ctx) {
// closed on shutdown.
allChannels.add(ctx.channel());
super.channelActive(ctx);
}
}
java.lang.String name()
ChannelGroupFuture write(java.lang.Object message)
message
写入此组中的所有Channel
。
如果指定的message
是一个实例ByteBuf
,它会自动为duplicated ,以避免出现竞争状况。
ByteBufHolder
也是如此。
请注意,此操作是异步的,因为ChannelOutboundInvoker.write(Object)
是。
ChannelGroupFuture write(java.lang.Object message, ChannelMatcher matcher)
message
所有Channel
s此组由给定的匹配ChannelMatcher
。
如果指定的message
是message
的实例, 则会自动为duplicated来避免竞争状况。
ByteBufHolder
也是如此。
请注意,此操作是异步的,因为ChannelOutboundInvoker.write(Object)
是。
ChannelGroupFuture
实例通知所有通道何时完成操作
ChannelGroupFuture write(java.lang.Object message, ChannelMatcher matcher, boolean voidPromise)
message
所有Channel
s此组由给定的匹配ChannelMatcher
。
如果指定的message
是message
的一个实例, 则会自动为duplicated避免竞争状况。
ByteBufHolder
也是如此。
请注意,此操作是异步的,因为ChannelOutboundInvoker.write(Object)
是。
如果voidPromise
是true
ChannelOutboundInvoker.voidPromise()
用于写入,因此对返回的ChannelGroupFuture
的相同限制适用于无效承诺。
ChannelGroupFuture
实例
ChannelGroup flush()
Channel
。
如果指定的messages
是一个实例ByteBuf
,它会自动为duplicated ,以避免出现竞争状况。
请注意,此操作是异步的,因为ChannelOutboundInvoker.write(Object)
是。
ChannelGroupFuture
实例通知所有通道何时完成操作
ChannelGroup flush(ChannelMatcher matcher)
Channel
s此组由给定匹配的ChannelMatcher
。
如果指定的messages
是一个实例ByteBuf
,它会自动为duplicated ,以避免出现竞争状况。
请注意,此操作是异步的,因为ChannelOutboundInvoker.write(Object)
是。
ChannelGroupFuture
实例通知所有通道何时完成操作
ChannelGroupFuture writeAndFlush(java.lang.Object message)
write(Object)
和
flush()
。
@Deprecated ChannelGroupFuture flushAndWrite(java.lang.Object message)
writeAndFlush(Object)
。
ChannelGroupFuture writeAndFlush(java.lang.Object message, ChannelMatcher matcher)
write(Object)
和flush()
的快捷方式,仅适用于与ChannelMatcher
匹配的Channel
。
ChannelGroupFuture writeAndFlush(java.lang.Object message, ChannelMatcher matcher, boolean voidPromise)
write(Object, ChannelMatcher, boolean)
和flush()
的快捷方式,仅适用于与ChannelMatcher
匹配的Channel
。
@Deprecated ChannelGroupFuture flushAndWrite(java.lang.Object message, ChannelMatcher matcher)
writeAndFlush(Object, ChannelMatcher)
。
ChannelGroupFuture disconnect()
Channel
与远程对等方的连接。
ChannelGroupFuture
实例
ChannelGroupFuture disconnect(ChannelMatcher matcher)
Channel
与远程对等设备断开连接,并与给定的ChannelMatcher
相匹配。
ChannelGroupFuture
实例通知所有通道何时完成操作
ChannelGroupFuture close()
ChannelGroupFuture
实例通知所有通道何时完成操作
ChannelGroupFuture close(ChannelMatcher matcher)
Channel
s此组由给定匹配的ChannelMatcher
。
如果Channel
连接到远程对等端或绑定到本地地址,它将自动断开连接并解除绑定。
ChannelGroupFuture
实例通知所有通道何时完成操作
@Deprecated ChannelGroupFuture deregister()
EventLoop
注销该组中的所有Channel
s。
请注意,此操作是异步的,因为ChannelOutboundInvoker.deregister()
是。
ChannelGroupFuture
实例通知所有通道何时完成操作
@Deprecated ChannelGroupFuture deregister(ChannelMatcher matcher)
EventLoop
注销该组中的所有Channel
,它们与给定的ChannelMatcher
相匹配。
请注意,此操作是异步的,因为ChannelOutboundInvoker.deregister()
是。
ChannelGroupFuture
实例通知所有通道何时完成操作
ChannelGroupFuture newCloseFuture()
ChannelGroupFuture
当所有这一切将被通知Channel
个 S中的这部分ChannelGroup
,在调用的时候,被关闭。
ChannelGroupFuture newCloseFuture(ChannelMatcher matcher)
ChannelGroupFuture
,当呼叫时ChannelGroup
中的所有Channel
都关闭时,将会通知该ChannelGroupFuture
。
Copyright © 2008–2018 The Netty Project. All rights reserved.