文章目录
- 前言
- 源码分析
- Bootstrap
- 构造器方法
- group *
- channel *
- localAddress *
- remoteAddress
- resolver
- validate *
- clone
- option *
- attr *
- handler
- init
- connect
- doResolveAndConnect
- ServerBootstrap
- 构造器方法
- group
- validate
- clone
- init
- ServerBootstrapAcceptor
- 构造器方法
- channelRead
- exceptionCaught
- bind
- doBind
前言
本文主要介绍Bootstrap模型在整个Netty底层中的处理逻辑。
概述地讲,ServerBootstrap用于引导ServerChannel,Bootstrap用于引导Channel,使它们更容易被客户端使用。
Netty客户端代码样例。

Netty服务端代码样例。

源码分析
注:标*的方法是Bootstrap与ServerBootstrap两者都有的。
Bootstrap

用于引导Channel为客户端更容易地使用。
构造器方法

第二个构造器中参数为Bootstrap,表示可以复用其他Bootstrap,将其相关参数赋予给新的Bootstrap。

group *

- EventLoopGroup:用来处理Channel的所有事件。

channel *

- channelClass:用来创建的Channel实例。


为channelFactory属性赋值为ReflectiveChannelFactory。

ReflectiveChannelFactory通过调用Channel的无参构造器方法创建Channel实例。
对应样例的代码,也就是创建NioSocketChannel实例。
localAddress *

- localAddress:用于绑定本机地址。



remoteAddress

- remoteAddress:用于连接远程地址。


resolver

- resolver:用于解析地址。默认是DefaultAddressResolverGroup。
validate *

要求channelHandler、group、channelFactory属性不为空。

clone


深拷贝Bootstrap。
option *

为Channel指定参数。
attr *

为Channel指定属性。
handler

- handler:用于处理请求。
指定处理器。
init

将ChannelHandler添加到ChannelPipeline中。设置channel的参数和属性。
connect





doResolveAndConnect
- 初始化并注册Channel。


创建channel。
初始化channel。
注册channel。
- 如果注册过程完成,则解析地址并连接远端。


直接连接远端。

解析地址并连接远端。

使用channel连接远端。(这里不再分析,在channel的文章中会解析)
- 如果注册过程没有完成,添加监听器,如果完成,则解析地址并连接远端。

- registered():对registered属性设置为true。
ServerBootstrap
ServerChannel的引导类。与Bootstrap的作用类似。
(注:下面仅仅列举与Bootstrap不同的方法。)
构造器方法


group


指定group、childGroup属性。


设置用于子channel的childOptions属性。

设置用于子channel的childAttrs属性。

设置用于子channel的childHandler属性。
validate

要求group、channelFactory、childHandler、childGroup属性不为空。

clone

深拷贝ServerBootstrap。
init

在channelPipeline中添加handler以及一个ServerBootstrapAcceptor实例。
ServerBootstrapAcceptor
构造器方法

channelRead

在pipeline中添加childHandler。设置childOptions、childAttrs。
此外,添加一个监听器。用于操作完成时,关闭子channel。

exceptionCaught

定时调度设置autoRead为true。
触发异常捕获事件。
bind

- validate():要求group、channelFactory属性不为空。

doBind

- 初始化并注册Channel。


创建channel。
初始化channel。
注册channel。
- 如果注册过程完成,进行绑定。


使用channel进行绑定。(这里不再分析,在channel的文章中再进行分析)
- 如果注册过程没有完成,添加一个监听器,当操作完成时执行绑定。

- registered() :对registered参数设置为true。
最后
以上就是能干唇彩最近收集整理的关于Netty架构篇 - Bootstrap、ServerBootstrap前言源码分析的全部内容,更多相关Netty架构篇内容请搜索靠谱客的其他文章。
发表评论 取消回复