Envoy源码分析之一--Server初始化(上)
*代码版本:stable/v1.7.1*
这里结合资料及源码仅分析正常场景的主干流程。本系列博文分为四部分,Server初始化,Envoy启动与新连接建立,Envoy对数据的读取、接收和处理,Envoy数据转发到服务端。
Server的初始化,初始化主要分为两部分,一是Envoy进程起来后的入口函数、二是Server的初始化。本章介绍第一部分。
##### 1. 入口
入口在source/exe/main.cc中
声明并初始化Envoy::MainCommon实例为main_common,执行main_common->run启动Server。
##### 2. Envoy::MainCommon
main_common.h中Envoy::MainCommon class如下:
MainCommonBase的实例对象执行run函数。
##### 3. Envoy::MainCommonBase
头文件中类定义如下:
class MainCommonBase函数实现方放在main_common.cc中如下:
Envoy::MainCommonBase constructor:
在上述构造函数体中,初始化server
##### 4. Server::InstanceImpl
Server.h定义InstanceImpl类:
server.cc中实现其构造函数
其中Server初始化在initialize(options, local_address, component_factory);中进行。
配置文件从InstanceUtil::loadBootstrapConfig中获取,放到&options中去。
- 点赞
- 收藏
- 关注作者
评论(0)