revert_server 用于,在启动过程中,在出现错误的分支退出函数时,自动析构,清理server状态。 raii,不需要在每个 错误分支都做状态清理资源回收等动作。 InitializeOnce , 这里面就是创建
revert_server 用于,在启动过程中,在出现错误的分支退出函数时,自动析构,清理server状态。
raii,不需要在每个错误分支都做状态清理资源回收等动作。
InitializeOnce, 这里面就是创建一些放置service的map。
服务参数的设置
然后是校验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初始化数量,则...
然后是builtinService的添加。
如图,几种builtinService的添加,如果了解brpc内置服务的化,这些名称应该挺熟悉的。(后续会总结下这些builtinService的来龙去脉)。
AddBuiltinService函数会调用AddServiceInternal完成添加动作。
restful 相关的服务初始化动作。
网络相关的初始化,server端口的监听,acceptor的创建。(这部分代码深入看下去,会发现服务解析,协议判断,请求处理等内容,后续总结)
这里是构建一个线程,去暴露bvar(与服务相关的)。就是放到全局map中,bvar相关的内容后续可以总结一下。
我们构建的那些服务,不是在这添加的,有专门的添加函数 。AddService(), 使用时,这个函数会在start() 之前调用。
下期总结AddService的内容,及服务从请求到执行的来龙去脉(包括builtinService)。