|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
public interface ChannelGroup
一个包含打开通道和为通道提供各种各样批量操作的线程安全集合.使用ChannelGroup
,你可以把通道分类到一个有意义的群组中(如.
基于每服务或每状态.) 一个已经关闭的通道会被自动的从集合中移除,所以你不需要担心已经添加到该集合的通道的生命周期.一个通道可以属于多个通道组.
如果你需要广播一个消息到多个通道,你可以添加关联的通道接受者并调用write(Object)
:
ChannelGroup
recipients = newDefaultChannelGroup
(); recipients.add(channelA); recipients.add(channelB); .. recipients.write(ChannelBuffers
.copiedBuffer( "Service will shut down for maintenance in 5 minutes.",CharsetUtil
.UTF_8));
ChannelGroup
执行简单的关闭
如果同时有ServerChannel
和非ServerChannel
存在同一个ChannelGroup
,任何对该通道群组的请求I/O操作都会先执行ServerChannel
,然后才是其他非ServerChannel
.
该规则对于当你要关闭一个服务器时非常有用:
ChannelGroup
allChannels = newDefaultChannelGroup
(); public static void main(String[] args) throws Exception {ServerBootstrap
b = newServerBootstrap
(..); ... // 启动一个服务器 b.getPipeline().addLast("handler", new MyHandler());Channel
serverChannel = b.bind(..); allChannels.add(serverChannel); ... 等待直到接收到关闭信号 ... // 关闭serverChannel和已接收的连接. allChannels.close().awaitUninterruptibly(); b.releaseExternalResources(); } public class MyHandler extendsSimpleChannelUpstreamHandler
{@Override
public void channelOpen(ChannelHandlerContext
ctx,ChannelStateEvent
e) { // 添加所有打开的通道到全局的通道组以便它们可以在关闭服务器时被关闭. allChannels.add(e.getChannel()); } }
方法摘要 | |
---|---|
ChannelGroupFuture |
close()
关闭该组所有通道.如果通道已经被连接到一个远程端或已绑定到一个本地地址,它会自动断开和取消绑定. |
ChannelGroupFuture |
disconnect()
断开该组中所有通道连接 |
Channel |
find(java.lang.Integer id)
返回匹配指定整数ID的通道. |
java.lang.String |
getName()
返回该通道组的名称.通道组名纯粹只是帮助你区分不同群组而已. |
ChannelGroupFuture |
setInterestOps(int interestOps)
使用指定的 interestOps 为该通道组中所有的通道调用Channel.setInterestOps(int) . |
ChannelGroupFuture |
setReadable(boolean readable)
使用指定的标识为该通道组中所有通道调用 Channel.setReadable(boolean) .请注意该操作和
Channel.setReadable(boolean) 一样是异步的. |
ChannelGroupFuture |
unbind()
取消该组中所有通道的绑定. |
ChannelGroupFuture |
write(java.lang.Object message)
写一个指定的消息到组中所有通道.如果指定的消息是一个 ChannelBuffer 实例,那么它会自动
使用复制以避免条件竞争.请注意该操作和
Channel.write(Object) 一样是异步的. |
ChannelGroupFuture |
write(java.lang.Object message,
java.net.SocketAddress remoteAddress)
为指定的远程地址写一个指定的消息到组中所有通道.如果指定的消息是一个 ChannelBuffer 实例,那么它会自动
使用复制以避免条件竞争.请注意该操作和
Channel.write(Object,SocketAddress) 一样是异步的. |
从接口 java.util.Set 继承的方法 |
---|
add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray |
从接口 java.lang.Comparable 继承的方法 |
---|
compareTo |
方法详细信息 |
---|
java.lang.String getName()
Channel find(java.lang.Integer id)
Channel
.否则返回null.ChannelGroupFuture setInterestOps(int interestOps)
interestOps
为该通道组中所有的通道调用Channel.setInterestOps(int)
.
请注意该操作和Channel.setInterestOps(int)
一样是异步的.
ChannelGroupFuture
ChannelGroupFuture setReadable(boolean readable)
Channel.setReadable(boolean)
.请注意该操作和
Channel.setReadable(boolean)
一样是异步的.
ChannelGroupFuture
ChannelGroupFuture write(java.lang.Object message)
ChannelBuffer
实例,那么它会自动
使用复制以避免条件竞争.请注意该操作和
Channel.write(Object)
一样是异步的.
ChannelGroupFuture
ChannelGroupFuture write(java.lang.Object message, java.net.SocketAddress remoteAddress)
ChannelBuffer
实例,那么它会自动
使用复制以避免条件竞争.请注意该操作和
Channel.write(Object,SocketAddress)
一样是异步的.
ChannelGroupFuture
ChannelGroupFuture disconnect()
ChannelGroupFuture
ChannelGroupFuture unbind()
ChannelGroupFuture
ChannelGroupFuture close()
ChannelGroupFuture
|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |