18、Netty源码分析:Unsafe.bind()

Unsafebind方法将channel绑定到指定的端口,绑定成功后触发ChannelActive事件,添加到channel的pipeline的handler接收到通知后进行相应的处理。整体流程如下:

*

具体的源码如下:

*

ChannelPromise.setUncancellable

*

将Promise的结果设置为UNCANCELLABLE。

ensureOpen

*

确保channel此时已经打开。

doBind

*

javaChannel()方法返回的是java原生的channel,调用其bind方法绑定端口。

fireChannelActive

*

当channel绑定端口成功后注册ChannelActive事件,也就是提交到EventLoop中等待执行。

ChannelPromise.trySuccess

*

将channel的Promise设置为SUCCESS状态。

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: