public interface Channel extends AttributeMap, ChannelOutboundInvoker, java.lang.Comparable<Channel>
一个频道为用户提供:
ChannelPipeline
。 Netty中的所有I / O操作都是异步的。 这意味着任何I / O调用都将立即返回,不保证在呼叫结束时所请求的I / O操作已完成。 相反,您将返回一个ChannelFuture
实例,该实例将在请求的I / O操作成功,失败或取消时通知您。
一个Channel
可以有一个parent取决于它是如何创建的。 例如,被ServerSocketChannel
接受的SocketChannel
将返回parent()
作为其母公司的ServerSocketChannel
。
层次结构的语义取决于Channel
所属的传输实现。 例如,您可以编写一个新的Channel
实现,创建共享一个套接字连接的子通道,如BEEP和SSH 。
一些运输公开了特定于运输的额外操作。 将Channel
向下转换为子类型以调用此类操作。 例如,对于旧的I / O数据报传输,多播加入/离开操作由DatagramChannel
提供。
它打电话是重要ChannelOutboundInvoker.close()
或ChannelOutboundInvoker.close(ChannelPromise)
释放所有资源,一旦你与完成Channel
。 这确保所有资源都以适当的方式释放,即文件句柄。
Modifier and Type | Interface and Description |
---|---|
static interface |
Channel.Unsafe
不应该从用户代码调用的
不安全操作。
|
Modifier and Type | Method and Description |
---|---|
ByteBufAllocator |
alloc()
返回分配的 ByteBufAllocator 这将被用于分配ByteBuf 秒。
|
long |
bytesBeforeUnwritable()
获取可以写入多少个字节,直到
isWritable() 返回
false 。
|
long |
bytesBeforeWritable()
|
ChannelFuture |
closeFuture()
返回此通道关闭时将通知的 ChannelFuture 。
|
ChannelConfig |
config()
返回此频道的配置。
|
EventLoop |
eventLoop()
|
Channel |
flush()
请求通过此ChannelOutboundInvoker清除所有未决消息。
|
ChannelId |
id()
返回此 Channel 的全局唯一标识符。
|
boolean |
isActive()
如果 Channel 处于活动状态并已连接,则返回true 。
|
boolean |
isOpen()
如果 Channel 已打开并且稍后可能会激活,则返回true
|
boolean |
isRegistered()
|
boolean |
isWritable()
当且仅当I / O线程将立即执行请求的写入操作时返回
true 。
|
java.net.SocketAddress |
localAddress()
返回此通道绑定的本地地址。
|
ChannelMetadata |
metadata()
返回 ChannelMetadata 的的Channel 其描述的性质Channel 。
|
Channel |
parent()
返回此频道的父级。
|
ChannelPipeline |
pipeline()
返回分配的 ChannelPipeline 。
|
Channel |
read()
请求来读取数据 Channel 进入第一入缓冲区,触发ChannelInboundHandler.channelRead(ChannelHandlerContext, Object) 如果数据读取事件,并触发channelReadComplete 事件,这样的处理可以决定继续读书。
|
java.net.SocketAddress |
remoteAddress()
返回此通道连接到的远程地址。
|
Channel.Unsafe |
unsafe()
返回提供不安全操作
的仅供内部使用的对象。
|
attr, hasAttr
bind, bind, close, close, connect, connect, connect, connect, deregister, deregister, disconnect, disconnect, newFailedFuture, newProgressivePromise, newPromise, newSucceededFuture, voidPromise, write, write, writeAndFlush, writeAndFlush
EventLoop eventLoop()
Channel parent()
null
如果此频道没有父频道。
ChannelConfig config()
boolean isOpen()
Channel
已打开并且稍后可能会激活,则返回true
boolean isRegistered()
boolean isActive()
Channel
处于活动状态并已连接,则返回true
。
ChannelMetadata metadata()
ChannelMetadata
的的Channel
其描述的性质Channel
。
java.net.SocketAddress localAddress()
SocketAddress
应该被下调为更具体的类型,例如InetSocketAddress
以检索详细信息。
null
如果这个频道没有绑定。
java.net.SocketAddress remoteAddress()
SocketAddress
应该被缩减为更具体的类型,例如InetSocketAddress
以检索详细信息。
null
如果此通道未连接。
如果此通道未连接,但它可以接收来自任意远程地址的消息(例如DatagramChannel
,请使用DefaultAddressedEnvelope.recipient()
来确定接收消息的来源,因为此方法将返回null
。
ChannelFuture closeFuture()
ChannelFuture
。
此方法始终返回相同的未来实例。
boolean isWritable()
true
。
当此方法返回false
时发出的任何写请求false
排队,直到I / O线程准备好处理排队的写请求为止。
long bytesBeforeUnwritable()
long bytesBeforeWritable()
Channel.Unsafe unsafe()
ChannelPipeline pipeline()
ChannelPipeline
。
ByteBufAllocator alloc()
ByteBufAllocator
这将被用于分配ByteBuf
秒。
Channel read()
ChannelOutboundInvoker
Channel
进入第一入缓冲区,触发ChannelInboundHandler.channelRead(ChannelHandlerContext, Object)
如果数据读取事件,并触发channelReadComplete
事件,这样的处理可以决定继续读书。
如果已经有待处理的读取操作,则此方法不执行任何操作。
这将导致在具有ChannelOutboundHandler.read(ChannelHandlerContext)
方法称为下一个的ChannelOutboundHandler
包含在ChannelPipeline
的的Channel
。
read
在界面
ChannelOutboundInvoker
Channel flush()
ChannelOutboundInvoker
flush
在界面
ChannelOutboundInvoker
Copyright © 2008–2018 The Netty Project. All rights reserved.