当前位置 : 主页 > 编程语言 > c语言 >

Server的启动

来源:互联网 收集:自由互联 发布时间:2023-09-03
revert_server 用于,在启动过程中,在出现错误的分支退出函数时,自动析构,清理server状态。 raii,不需要在每个 错误分支都做状态清理资源回收等动作。 InitializeOnce , 这里面就是创建

Server的启动_启动过程

revert_server 用于,在启动过程中,在出现错误的分支退出函数时,自动析构,清理server状态。

raii,不需要在每个错误分支都做状态清理资源回收等动作。



Server的启动_启动过程_02

InitializeOnce, 这里面就是创建一些放置service的map。


Server的启动_启动过程_03

服务参数的设置


然后是校验h2参数,和 如果指定了http_master_service则做一些简单的校验。

然后是 _session_local_data_pool 的构建(如果指定了某个参数的话,默认是空)。

(上面两个也不重要)


_keytable_pool = new bthread_keytable_pool_t;
if (bthread_keytable_pool_init(_keytable_pool) != 0) { ... }

_keytable_pool 是什么,后面可以了解一下。


_tl_options // threadlocal相关参数

(不重要)


如果指定了bthread初始化数量,则...


Server的启动_启动过程_04

然后是builtinService的添加。

Server的启动_启动过程_05

如图,几种builtinService的添加,如果了解brpc内置服务的化,这些名称应该挺熟悉的。(后续会总结下这些builtinService的来龙去脉)。

AddBuiltinService函数会调用AddServiceInternal完成添加动作。

Server的启动_启动过程_06


Server的启动_启动过程_07

restful 相关的服务初始化动作。


Server的启动_启动过程_08

网络相关的初始化,server端口的监听acceptor的创建。(这部分代码深入看下去,会发现服务解析,协议判断,请求处理等内容,后续总结


Server的启动_启动过程_09

这里是构建一个线程,去暴露bvar(与服务相关的)。就是放到全局map中,bvar相关的内容后续可以总结一下。



我们构建的那些服务,不是在这添加的,有专门的添加函数 。AddService(), 使用时,这个函数会在start() 之前调用。


下期总结AddService的内容,及服务从请求到执行的来龙去脉(包括builtinService)。

上一篇:【C语言】C语言常用内存函数的深度解析
下一篇:没有了
网友评论