public abstract class AbstractChannel extends DefaultAttributeMap implements Channel
Channel
的实现。
Modifier and Type | Class and Description |
---|---|
protected class |
AbstractChannel.AbstractUnsafe
Unsafe 子类必须扩展和使用的实现。
|
Channel.Unsafe
Modifier | Constructor and Description |
---|---|
protected |
AbstractChannel(Channel parent)
创建一个新的实例。
|
protected |
AbstractChannel(Channel parent, ChannelId id)
创建一个新的实例。
|
Modifier and Type | Method and Description |
---|---|
ByteBufAllocator |
alloc()
返回分配的 ByteBufAllocator 这将被用于分配ByteBuf 秒。
|
ChannelFuture |
bind(java.net.SocketAddress localAddress)
请求绑定到给定的 SocketAddress 并在操作完成后通知ChannelFuture ,无论是因为操作成功还是由于错误。
|
ChannelFuture |
bind(java.net.SocketAddress localAddress, ChannelPromise promise)
请求绑定到给定的 SocketAddress 并在操作完成后通知ChannelFuture ,无论是因为操作成功还是由于错误。
|
long |
bytesBeforeUnwritable()
获取可以写入多少个字节,直到
Channel.isWritable() 返回
false 。
|
long |
bytesBeforeWritable()
|
ChannelFuture |
close()
请求关闭 Channel ,并在操作完成后通知ChannelFuture ,无论是因为操作成功还是由于错误。
|
ChannelFuture |
close(ChannelPromise promise)
请求关闭 Channel ,并在操作完成后通知ChannelFuture ,无论是因为操作成功还是由于错误。
|
ChannelFuture |
closeFuture()
返回此通道关闭时将通知的 ChannelFuture 。
|
int |
compareTo(Channel o) |
ChannelFuture |
connect(java.net.SocketAddress remoteAddress)
请求连接到给定的 SocketAddress 并在操作完成后通知ChannelFuture ,这可能是因为操作成功或者由于错误。
|
ChannelFuture |
connect(java.net.SocketAddress remoteAddress, ChannelPromise promise)
请求连接到给定的 SocketAddress 并在操作完成后通知ChannelFuture ,无论是因为操作成功还是由于错误。
|
ChannelFuture |
connect(java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress)
请求连接到给定的 SocketAddress 同时绑定到localAddress,并在操作完成后通知ChannelFuture ,无论是因为操作成功还是由于错误。
|
ChannelFuture |
connect(java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress, ChannelPromise promise)
请求连接到给定的 SocketAddress 同时绑定到localAddress,并在操作完成后通知ChannelFuture ,无论是因为操作成功还是由于错误。
|
ChannelFuture |
deregister()
请求从先前分配的 EventExecutor 注销,并在操作完成后通知ChannelFuture ,无论是因为操作成功还是由于错误。
|
ChannelFuture |
deregister(ChannelPromise promise)
请求从先前分配的 EventExecutor 注销,并在操作完成后通知ChannelFuture ,无论是因为操作成功还是由于错误。
|
ChannelFuture |
disconnect()
请求断开与远程对等方的连接,并在操作完成后通知 ChannelFuture ,可能是因为操作成功或错误。
|
ChannelFuture |
disconnect(ChannelPromise promise)
请求从远程对等方断开连接,并在操作完成后通知 ChannelFuture ,无论是因为操作成功还是由于错误。
|
protected abstract void |
doBeginRead()
安排读取操作。
|
protected abstract void |
doBind(java.net.SocketAddress localAddress)
将 Channel 绑定到SocketAddress
|
protected abstract void |
doClose()
关闭 Channel
|
protected void |
doDeregister()
|
protected abstract void |
doDisconnect()
将此 Channel 从其远程对等端断开
|
protected void |
doRegister()
|
protected void |
doShutdownOutput()
当条件证明关闭通道的输出部分时调用。
|
protected abstract void |
doWrite(ChannelOutboundBuffer in)
将给定缓冲区的内容刷新到远程对等体。
|
boolean |
equals(java.lang.Object o)
当且仅当指定的对象与此通道相同(即:
this == o )时才返回
true 。
|
EventLoop |
eventLoop()
|
protected java.lang.Object |
filterOutboundMessage(java.lang.Object msg)
在将新消息添加到此 AbstractChannel 的ChannelOutboundBuffer 时调用 ,以便Channel 实现将消息转换为另一个消息。
|
Channel |
flush()
请求通过此ChannelOutboundInvoker清除所有未决消息。
|
int |
hashCode()
返回此频道的ID。
|
ChannelId |
id()
返回此 Channel 的全局唯一标识符。
|
protected void |
invalidateLocalAddress()
已过时。
没有这个用例。
|
protected void |
invalidateRemoteAddress()
已过时。
没有这个用例。
|
protected abstract boolean |
isCompatible(EventLoop loop)
如果给定的 EventLoop 与此实例兼容,则返回true 。
|
boolean |
isRegistered()
|
boolean |
isWritable()
当且仅当I / O线程将立即执行请求的写入操作时才返回
true 。
|
java.net.SocketAddress |
localAddress()
返回此通道绑定的本地地址。
|
protected abstract java.net.SocketAddress |
localAddress0()
返回本地绑定的
SocketAddress 。
|
protected DefaultChannelPipeline |
newChannelPipeline()
返回一个新的 DefaultChannelPipeline 实例。
|
ChannelFuture |
newFailedFuture(java.lang.Throwable cause)
创建一个新的已被标记为失败的 ChannelFuture 。
|
protected ChannelId |
newId()
返回一个新的 DefaultChannelId 实例。
|
ChannelProgressivePromise |
newProgressivePromise()
|
ChannelPromise |
newPromise()
返回一个新的 ChannelPromise 。
|
ChannelFuture |
newSucceededFuture()
创建一个新的标记为已成功的 ChannelFuture 。
|
protected abstract AbstractChannel.AbstractUnsafe |
newUnsafe()
创建一个新的 AbstractChannel.AbstractUnsafe 实例,该实例将用于Channel 的生命周期
|
Channel |
parent()
返回此频道的父级。
|
ChannelPipeline |
pipeline()
返回分配的 ChannelPipeline 。
|
Channel |
read()
请求将 Channel 中的数据读入第一个入站缓冲区,如果读取了数据,则触发ChannelInboundHandler.channelRead(ChannelHandlerContext, Object) 事件,并触发channelReadComplete 事件,以便处理程序决定继续读取数据。
|
java.net.SocketAddress |
remoteAddress()
返回此通道连接到的远程地址。
|
protected abstract java.net.SocketAddress |
remoteAddress0()
返回 SocketAddress 其中Channel 被连接到。
|
java.lang.String |
toString()
返回此频道的
String 表示形式。
|
Channel.Unsafe |
unsafe()
返回提供不安全操作
的仅供内部使用的对象。
|
ChannelPromise |
voidPromise()
返回一个特殊的ChannelPromise,可用于不同的操作。
|
ChannelFuture |
write(java.lang.Object msg)
请求通过 ChannelHandlerContext 通过ChannelPipeline 写一条消息。
|
ChannelFuture |
write(java.lang.Object msg, ChannelPromise promise)
要求通过 ChannelHandlerContext 通过ChannelPipeline 写信息。
|
ChannelFuture |
writeAndFlush(java.lang.Object msg)
|
ChannelFuture |
writeAndFlush(java.lang.Object msg, ChannelPromise promise)
|
attr, hasAttr
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
attr, hasAttr
protected AbstractChannel(Channel parent)
parent
- 此频道的母公司。
null
如果没有父母。
protected ChannelId newId()
DefaultChannelId
实例。
子类可以重写此方法来指定自定义ChannelId
s到Channel
个使用的S AbstractChannel(Channel)
构造。
protected DefaultChannelPipeline newChannelPipeline()
DefaultChannelPipeline
实例。
public boolean isWritable()
Channel
复制的描述
true
。
当此方法返回false
时发出的任何写入请求false
排队,直到I / O线程准备好处理排队的写入请求。
isWritable
在界面
Channel
public long bytesBeforeUnwritable()
Channel
bytesBeforeUnwritable
,界面
Channel
public long bytesBeforeWritable()
Channel
复制的描述
bytesBeforeWritable
在界面
Channel
public ChannelPipeline pipeline()
Channel
复制的描述
ChannelPipeline
。
public ByteBufAllocator alloc()
Channel
复制的描述
ByteBufAllocator
这将被用于分配ByteBuf
秒。
public java.net.SocketAddress localAddress()
Channel
SocketAddress
应该被下调为更具体的类型,例如InetSocketAddress
以检索详细信息。
localAddress
,界面
Channel
null
如果此通道未绑定。
@Deprecated protected void invalidateLocalAddress()
public java.net.SocketAddress remoteAddress()
Channel
SocketAddress
应该被放入更具体的类型,例如InetSocketAddress
以检索详细信息。
remoteAddress
在界面
Channel
null
如果此通道未连接。
如果此通道未连接,但它可以接收来自任意远程地址的消息(例如DatagramChannel
,请使用DefaultAddressedEnvelope.recipient()
来确定收到消息的来源,因为此方法将返回null
。
@Deprecated protected void invalidateRemoteAddress()
public boolean isRegistered()
Channel
复制的描述
isRegistered
在界面
Channel
public ChannelFuture bind(java.net.SocketAddress localAddress)
ChannelOutboundInvoker
SocketAddress
并在操作完成后通知ChannelFuture
,因为操作成功或错误。
这将导致在具有ChannelOutboundHandler.bind(ChannelHandlerContext, SocketAddress, ChannelPromise)
方法称为下一个的ChannelOutboundHandler
包含在ChannelPipeline
的的Channel
。
bind
在界面
ChannelOutboundInvoker
public ChannelFuture connect(java.net.SocketAddress remoteAddress)
ChannelOutboundInvoker
复制的描述
SocketAddress
并在操作完成后通知ChannelFuture
,无论是因为操作成功还是由于错误。
如果由于连接超时而导致连接失败,则ChannelFuture
将失败,并显示ConnectTimeoutException
。 如果因连接拒绝而失败,将使用ConnectException
。
这将导致在具有ChannelOutboundHandler.connect(ChannelHandlerContext, SocketAddress, SocketAddress, ChannelPromise)
方法称为下一个的ChannelOutboundHandler
包含在ChannelPipeline
的的Channel
。
connect
,界面
ChannelOutboundInvoker
public ChannelFuture connect(java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress)
ChannelOutboundInvoker
复制的描述
SocketAddress
同时绑定到localAddress,并在操作完成后通知ChannelFuture
,无论是因为操作成功还是由于错误。
这将导致在具有ChannelOutboundHandler.connect(ChannelHandlerContext, SocketAddress, SocketAddress, ChannelPromise)
方法称为下一个的ChannelOutboundHandler
包含在ChannelPipeline
的的Channel
。
connect
在界面
ChannelOutboundInvoker
public ChannelFuture disconnect()
ChannelOutboundInvoker
ChannelFuture
,可能是因为操作成功或者由于错误。
这将导致在具有ChannelOutboundHandler.disconnect(ChannelHandlerContext, ChannelPromise)
方法称为下一个的ChannelOutboundHandler
包含在ChannelPipeline
的的Channel
。
disconnect
,界面
ChannelOutboundInvoker
public ChannelFuture close()
ChannelOutboundInvoker
Channel
,并在操作完成后通知ChannelFuture
,无论是因为操作成功还是由于错误。
关闭后不可能再次使用它。
这将导致在具有ChannelOutboundHandler.close(ChannelHandlerContext, ChannelPromise)
方法称为下一个的ChannelOutboundHandler
包含在ChannelPipeline
的的Channel
。
close
在界面
ChannelOutboundInvoker
public ChannelFuture deregister()
ChannelOutboundInvoker
复制的描述
EventExecutor
,并在操作完成后通知ChannelFuture
,无论是因为操作成功还是由于错误。
这将导致在具有ChannelOutboundHandler.deregister(ChannelHandlerContext, ChannelPromise)
方法称为下一个的ChannelOutboundHandler
包含在ChannelPipeline
的的Channel
。
deregister
在界面
ChannelOutboundInvoker
public Channel flush()
ChannelOutboundInvoker
flush
,界面
Channel
flush
在界面
ChannelOutboundInvoker
public ChannelFuture bind(java.net.SocketAddress localAddress, ChannelPromise promise)
ChannelOutboundInvoker
SocketAddress
并在操作完成后通知ChannelFuture
,这可能是因为操作成功或者由于错误。
给定的ChannelPromise
将被通知。
这将导致在具有ChannelOutboundHandler.bind(ChannelHandlerContext, SocketAddress, ChannelPromise)
方法称为下一个的ChannelOutboundHandler
包含在ChannelPipeline
的的Channel
。
bind
在界面
ChannelOutboundInvoker
public ChannelFuture connect(java.net.SocketAddress remoteAddress, ChannelPromise promise)
ChannelOutboundInvoker
SocketAddress
并在操作完成后通知ChannelFuture
,这可能是因为操作成功或错误。
给定的ChannelFuture
将被通知。
如果由于连接超时而导致连接失败,则ChannelFuture
将失败,并显示ConnectTimeoutException
。 如果因连接拒绝而失败,将使用ConnectException
。
这将导致在具有ChannelOutboundHandler.connect(ChannelHandlerContext, SocketAddress, SocketAddress, ChannelPromise)
方法称为下一个的ChannelOutboundHandler
包含在ChannelPipeline
的的Channel
。
connect
在界面
ChannelOutboundInvoker
public ChannelFuture connect(java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress, ChannelPromise promise)
ChannelOutboundInvoker
SocketAddress
同时绑定到localAddress,并在操作完成后通知ChannelFuture
,无论是因为操作成功还是由于错误。
给定的ChannelPromise
将被通知并且返回。
这将导致在具有ChannelOutboundHandler.connect(ChannelHandlerContext, SocketAddress, SocketAddress, ChannelPromise)
方法称为下一个的ChannelOutboundHandler
包含在ChannelPipeline
的的Channel
。
connect
在界面
ChannelOutboundInvoker
public ChannelFuture disconnect(ChannelPromise promise)
ChannelOutboundInvoker
复制的描述
ChannelFuture
,无论是因为操作成功还是由于错误。
给定的ChannelPromise
将被通知。
这将导致在具有ChannelOutboundHandler.disconnect(ChannelHandlerContext, ChannelPromise)
方法称为下一个的ChannelOutboundHandler
包含在ChannelPipeline
的的Channel
。
disconnect
在界面
ChannelOutboundInvoker
public ChannelFuture close(ChannelPromise promise)
ChannelOutboundInvoker
复制的描述
Channel
,并在操作完成后通知ChannelFuture
,无论是因为操作成功还是由于错误。
关闭后不可能再次使用它。
给定的ChannelPromise
将被通知。
这将导致在具有ChannelOutboundHandler.close(ChannelHandlerContext, ChannelPromise)
方法称为下一个的ChannelOutboundHandler
包含在ChannelPipeline
的的Channel
。
close
在界面
ChannelOutboundInvoker
public ChannelFuture deregister(ChannelPromise promise)
ChannelOutboundInvoker
复制的描述
EventExecutor
,并在操作完成后通知ChannelFuture
,无论是因为操作成功还是由于错误。
给定的ChannelPromise
将被通知。
这将导致在具有ChannelOutboundHandler.deregister(ChannelHandlerContext, ChannelPromise)
方法称为下一个的ChannelOutboundHandler
包含在ChannelPipeline
的的Channel
。
deregister
,界面
ChannelOutboundInvoker
public Channel read()
ChannelOutboundInvoker
复制的描述
Channel
读入第一个入站缓冲区,如果读取数据,则触发ChannelInboundHandler.channelRead(ChannelHandlerContext, Object)
事件,并触发channelReadComplete
事件,以便处理程序可以决定继续读取数据。
如果已经有待处理的读取操作,则此方法不执行任何操作。
这将导致在具有ChannelOutboundHandler.read(ChannelHandlerContext)
方法称为下一个的ChannelOutboundHandler
包含在ChannelPipeline
的的Channel
。
read
,界面
Channel
read
,界面
ChannelOutboundInvoker
public ChannelFuture write(java.lang.Object msg)
ChannelOutboundInvoker
ChannelHandlerContext
通过ChannelPipeline
写一条消息。
此方法不会请求实际刷新,所以一旦您要请求将所有待处理数据清除到实际传输,请务必调用ChannelOutboundInvoker.flush()
。
write
在界面
ChannelOutboundInvoker
public ChannelFuture write(java.lang.Object msg, ChannelPromise promise)
ChannelOutboundInvoker
复制的描述
ChannelHandlerContext
通过ChannelPipeline
写一条消息。
此方法不会请求实际刷新,因此,一旦要请求将所有待处理数据清除到实际传输,请务必调用ChannelOutboundInvoker.flush()
。
write
在界面
ChannelOutboundInvoker
public ChannelFuture writeAndFlush(java.lang.Object msg)
ChannelOutboundInvoker
复制的描述
writeAndFlush
,界面
ChannelOutboundInvoker
public ChannelFuture writeAndFlush(java.lang.Object msg, ChannelPromise promise)
ChannelOutboundInvoker
复制的描述
writeAndFlush
接口
ChannelOutboundInvoker
public ChannelPromise newPromise()
ChannelOutboundInvoker
复制的描述
ChannelPromise
。
newPromise
在界面
ChannelOutboundInvoker
public ChannelProgressivePromise newProgressivePromise()
ChannelOutboundInvoker
newProgressivePromise
接口
ChannelOutboundInvoker
public ChannelFuture newSucceededFuture()
ChannelOutboundInvoker
复制的描述
ChannelFuture
。
所以Future.isSuccess()
将返回true
。
所有FutureListener
添加到它将直接通知。
同样,每个阻塞方法的调用都会返回而不会阻塞。
newSucceededFuture
在界面
ChannelOutboundInvoker
public ChannelFuture newFailedFuture(java.lang.Throwable cause)
ChannelOutboundInvoker
复制的描述
ChannelFuture
。
所以Future.isSuccess()
将返回false
。
所有FutureListener
添加到它将直接通知。
同样,每个阻塞方法的调用都会返回而不会阻塞。
newFailedFuture
,界面
ChannelOutboundInvoker
public ChannelFuture closeFuture()
Channel
复制的描述
ChannelFuture
。
此方法始终返回相同的未来实例。
closeFuture
,界面
Channel
public Channel.Unsafe unsafe()
Channel
复制的描述
protected abstract AbstractChannel.AbstractUnsafe newUnsafe()
AbstractChannel.AbstractUnsafe
实例,该实例将用于Channel
的生命周期
public final int hashCode()
hashCode
在课堂
java.lang.Object
public final boolean equals(java.lang.Object o)
this == o
)时返回
true
。
equals
在课程
java.lang.Object
public final int compareTo(Channel o)
compareTo
,界面
java.lang.Comparable<Channel>
public java.lang.String toString()
String
表示形式。
返回的字符串包含ID , local address和remote address这个渠道更容易识别。
toString
在课程
java.lang.Object
public final ChannelPromise voidPromise()
ChannelOutboundInvoker
它仅支持将其用于ChannelOutboundInvoker.write(Object, ChannelPromise)
。
请注意,返回的ChannelPromise
不支持大多数操作,只应在您希望为每个写入操作保存对象分配时使用。 您将无法检测操作是否完成,仅当它失败时才会检测操作是否完成,因为在这种情况下实现将调用ChannelPipeline.fireExceptionCaught(Throwable)
。
voidPromise
在界面
ChannelOutboundInvoker
protected abstract java.net.SocketAddress localAddress0()
SocketAddress
。
protected abstract java.net.SocketAddress remoteAddress0()
SocketAddress
其中Channel
被连接到。
protected void doRegister() throws java.lang.Exception
java.lang.Exception
protected abstract void doBind(java.net.SocketAddress localAddress) throws java.lang.Exception
Channel
绑定到SocketAddress
java.lang.Exception
protected abstract void doDisconnect() throws java.lang.Exception
Channel
从其远程对等端断开
java.lang.Exception
protected abstract void doClose() throws java.lang.Exception
Channel
java.lang.Exception
@UnstableApi protected void doShutdownOutput() throws java.lang.Exception
java.lang.Exception
protected void doDeregister() throws java.lang.Exception
java.lang.Exception
protected abstract void doBeginRead() throws java.lang.Exception
java.lang.Exception
protected abstract void doWrite(ChannelOutboundBuffer in) throws java.lang.Exception
java.lang.Exception
protected java.lang.Object filterOutboundMessage(java.lang.Object msg) throws java.lang.Exception
AbstractChannel
的ChannelOutboundBuffer
中时调用 ,以便Channel
实现将消息转换为另一个消息。
(例如堆缓冲区 - >直接缓冲区)
java.lang.Exception
Copyright © 2008–2018 The Netty Project. All rights reserved.