20、Netty源码分析:Unsafe.connect()

客户端连接服务端使用的是connect方法,整体过程如下:

*

整体源码过程如下:

*

在这个过程我们感兴趣的是doConnect方法,它是AbstractNioChannel的一个抽象方法,其客户端使用的实现类NioSocketChannel实现了这个方法,源码过程如下:

*

接下来我们详细分析SocketUtils.connect()finishConnect()方法

SocketUtils.connect()

最终调用java底层的connect方法进行连接,如果是非阻塞的话会返回false,后续会调用finishConnect()完成整个connect操作;如果是阻塞的话会等待连接成功并返回结果true。
*

finishConnect()

当netty的eventloop轮询检测到OP_CONNECT事件时会调用finishConnect()完成连接,源码如下:

*

doFinishConnect方法源码如下:
*

fulfillConnectPromise方法主要是设置promise状态值,源码如下:

*

至此Unsafe的connect方法分析结束。

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