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.