Netty学习:ChannelOutboundInvoker

ChannelFuture bind(SocketAddress localAddress);请求绑定到给定的{@link SocketAddress},并在操作完成后通知{@link ChannelFuture},原因可能是操作成功,也可能是错误。这将导致{@link Channel}的{@link ChannelPipeline}中的下一个{@link ChannelOutboundHandler}的{@link ChannelOutboundHandler#bind(ChannelHandlerContext, SocketAddress, ChannelPromise)}方法被调用。

ChannelFuture connect(SocketAddress remoteAddress);请求连接到给定的{@link SocketAddress},并在操作完成后通知{@link ChannelFuture},原因可能是操作成功,也可能是错误。如果连接超时导致连接失败,{@link ChannelFuture}将以{@link ConnectTimeoutException}失败。如果因为连接被拒绝而失败,将使用{@link ConnectException}。这将导致{@link Channel}的{@link ChannelPipeline}中的下一个{@link ChannelOutboundHandler}的{{@link ChannelOutboundHandler#connect(ChannelHandlerContext, SocketAddress, SocketAddress, ChannelPromise)}方法被调用。

ChannelFuture connect(SocketAddress remoteAddress, SocketAddress localAddress);请求连接到给定的{@link SocketAddress},同时绑定到localAddress,并在操作完成后通知{@link ChannelFuture},原因可能是操作成功,也可能是错误。这将导致{@link Channel}的{@link ChannelPipeline}中的下一个{@link ChannelOutboundHandler}的{@link ChannelOutboundHandler#connect(ChannelHandlerContext, SocketAddress, SocketAddress, ChannelPromise)}方法被调用。

ChannelFuture disconnect();请求断开与远程对等点的连接,并在操作完成后通知{@link ChannelFuture},原因可能是操作成功,也可能是错误。这将导致{@link Channel}的{@link ChannelPipeline}中的下一个{@link ChannelOutboundHandler}的{@link ChannelOutboundHandler#disconnect(ChannelHandlerContext, ChannelPromise)}方法被调用。

ChannelFuture close();请求关闭{@link Channel},并在操作完成后通知{@link ChannelFuture},原因可能是操作成功,也可能是错误。关闭后,就不可能再重用它了。这将导致{@link Channel}的{@link ChannelPipeline}中的下一个{@link ChannelOutboundHandler}的{@link ChannelOutboundHandler#close(ChannelHandlerContext, ChannelPromise)}方法被调用。

ChannelFuture deregister();请求从之前分配的{@link EventExecutor}取消注册,并在操作完成后通知{@link ChannelFuture},原因可能是操作成功,也可能是错误。这将导致{@link Channel}的{@link ChannelPipeline}中的下一个{@link ChannelOutboundHandler}的{@link ChannelOutboundHandler#deregister(ChannelHandlerContext, ChannelPromise)}方法被调用。

ChannelFuture bind(SocketAddress localAddress, ChannelPromise promise);请求绑定到给定的{@link SocketAddress},并在操作完成后通知{@link ChannelFuture},原因可能是操作成功,也可能是错误。将通知给定的{@link ChannelPromise}。这将导致{@link Channel}的{@link ChannelPipeline}中的下一个{@link ChannelOutboundHandler}的{@link {@link ChannelOutboundHandler#bind(ChannelHandlerContext, SocketAddress, ChannelPromise)} 方法被调用。

ChannelFuture connect(SocketAddress remoteAddress, ChannelPromise promise);请求连接到给定的{@link SocketAddress},并在操作完成后通知{@link ChannelFuture},原因可能是操作成功,也可能是错误。给定的{@link ChannelFuture}将被通知。如果连接超时导致连接失败,{@link ChannelFuture}将以{@link ConnectTimeoutException}失败。如果因为连接被拒绝而失败,将使用{@link ConnectException}。这将导致{@link Channel}的{@link ChannelPipeline}中的下一个{@link ChannelOutboundHandler}的{@link ChannelOutboundHandler#connect(ChannelHandlerContext, SocketAddress, SocketAddress, ChannelPromise)} 方法被调用。

ChannelFuture connect(SocketAddress remoteAddress, SocketAddress localAddress, ChannelPromise promise);请求连接到给定的{@link SocketAddress},同时绑定到localAddress,并在操作完成后通知{@link ChannelFuture},原因可能是操作成功,也可能是错误。给定的{@link ChannelPromise}将被通知并返回。这将导致{@link Channel}的{@link ChannelPipeline}中的下一个{@link ChannelOutboundHandler}的{@link ChannelOutboundHandler#connect(ChannelHandlerContext, SocketAddress, SocketAddress, ChannelPromise)} 方法被调用。

ChannelFuture disconnect(ChannelPromise promise);请求断开与远程对等点的连接,并在操作完成后通知{@link ChannelFuture},原因可能是操作成功,也可能是错误。将通知给定的{@link ChannelPromise}。这将导致{@link Channel}的{@link ChannelPipeline}中的下一个{@link ChannelOutboundHandler}的{@link ChannelOutboundHandler#disconnect(ChannelHandlerContext, ChannelPromise)}方法被调用。

ChannelFuture close(ChannelPromise promise);请求关闭{@link Channel},并在操作完成后通知{@link ChannelFuture},原因可能是操作成功,也可能是错误。关闭后,就不可能再重用它了。将通知给定的{@link ChannelPromise}。这将导致{@link Channel}的{@link ChannelPipeline}中的下一个{@link ChannelOutboundHandler}的{@link ChannelOutboundHandler#close(ChannelHandlerContext, ChannelPromise)}方法被调用。

ChannelFuture deregister(ChannelPromise promise);请求从之前分配的{@link EventExecutor}取消注册,并在操作完成后通知{@link ChannelFuture},原因可能是操作成功,也可能是错误。将通知给定的{@link ChannelPromise}。这将导致{@link Channel}的{@link ChannelPipeline}中的下一个{@link ChannelOutboundHandler}的{{@link ChannelOutboundHandler#deregister(ChannelHandlerContext, ChannelPromise)}方法被调用。

ChannelOutboundInvoker read();请求从{@link Channel}读取数据到第一个入站缓冲区,如果读取数据,则触发{@link ChannelInboundHandler#channelRead(ChannelHandlerContext, Object)事件,并触发{@link channelboundhandler #channelReadComplete(ChannelHandlerContext) channelReadComplete}事件,以便处理程序可以决定继续读取。如果已经有一个挂起的读操作,这个方法什么也不做。这将导致{@link Channel}的{@link ChannelPipeline}中的下一个{@link ChannelOutboundHandler}的{@link ChannelOutboundHandler#read(ChannelHandlerContext)}方法被调用。

ChannelFuture write(Object msg);请求通过这个{@link ChannelHandlerContext}通过{@link ChannelPipeline}写入消息。此方法不会请求实际刷新,因此请确保在希望请求将所有挂起数据刷新到实际传输时调用{@link #flush()}。

ChannelFuture write(Object msg, ChannelPromise promise);请求通过这个{@link ChannelHandlerContext}通过{@link ChannelPipeline}写入消息。此方法不会请求实际刷新,因此请确保在希望请求将所有挂起数据刷新到实际传输时调用{@link #flush()}。

ChannelOutboundInvoker flush();请求通过此ChannelOutboundInvoker刷新所有挂起的消息。

ChannelFuture writeAndFlush(Object msg, ChannelPromise promise);调用{@link #write(Object, ChannelPromise)}和{@link #flush()}的快捷方式。

ChannelFuture writeAndFlush(Object msg);调用{@link #write(Object)} and {@link #flush()}的快捷方式。

ChannelPromise newPromise();返回一个新的{@link ChannelPromise}。

ChannelProgressivePromise newProgressivePromise();返回一个新的{@link ChannelProgressivePromise}

ChannelFuture newSucceededFuture();创建一个新的{@link ChannelFuture},标记为已成功。因此{@link ChannelFuture#isSuccess()}将返回{@code true}。所有添加到它的{@link FutureListener}将被直接通知。而且阻塞方法的每个调用都将返回,而不会阻塞。

ChannelFuture newFailedFuture(Throwable cause);创建一个新的{@link ChannelFuture},它已经被标记为失败。因此{@link ChannelFuture#isSuccess()}将返回{@code false}。所有添加到它的{@link FutureListener}将被直接通知。而且阻塞方法的每个调用都将返回,而不会阻塞。

ChannelPromise voidPromise();返回可用于不同操作的特殊ChannelPromise。它只支持用于{@link ChannelOutboundInvoker#write(Object, ChannelPromise)}。注意,返回的{@link ChannelPromise}将不支持大多数操作,只有在您希望为每个写操作保存对象分配时才应该使用。您将无法检测操作是否完成,除非它失败,因为在这种情况下,实现将调用{@link ChannelPipeline#fireExceptionCaught(Throwable)}。请注意这是一个专家特性,应该小心使用!

 

 

你可能感兴趣的:(Netty)