RGW MAIN 函数
RGW 主函数分析
main:
说明关闭标准的错误输出,而使用标准输出替换.这是因为FCGX 将信息输出到了STDOUT.
参数:
默认参数 –debug-rgw 和 –keystring , 如果 argv 中具备输入参数, 则通过argv_to_vec替换这些默认参数.
函数 argv_to_vec 和 env_to_vec 表示将环境变量参数和输入参数都输出到args 中.
根据输入参数和默认输入参数,通过函数global_pre_init进行初始化, 在该函数中生成对下面重要的全局变量进行初始化操作. 这个函数分析会放在以后的章节中讨论,本身的几个参数也非常的重要.花费一个章节,来讨论该函数.
CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS : 默认类型, 无特权. 这个是和下面的几个对应而言的.
通过配置g_conf->rgw_frontens 获取到frontends , 该容器中存放frontend的类型.
如果这个容器为空了, 则将fastcgi存放到该容器中.
该段是对前端进行信息的初始化,并将其存放在fe_map容器中,Civetweb因为其本身是内置在Radosgw中的, 所以需要加上一些特殊的处理. 端口以及flags
获取到frontend后,继续初始化操作.
如果参数中具有-h 或者 –help, 则usage()后退出.
该函数并没有内容.
将该用做成daemon的模式.以便后台运行,
初始化超时锁,当应用初始化操时时会返回退出.
进入初始化操作.
Enable_perf_counter() 初始化计数统计.
Common_init_finish() 初始化加密类 以及 service_thread . (admin_sock 的内容被接收.)
Rgw_tools_init 初始化ext_mime_type表
Rgw_init_resolver 初始化RGWSolver类,该类用于解析host/cname后续专门章节解析RGWResolver类.
对于Curl 以及FCGX_Init的初始化,调用是外部的.so的API.
初始化RGWRados,如果失败,则取消初始化定时器.返回EIO
成功,则启动性能统计以及rest_api的初始化,对于rest 接口,在RGW描述很多,在以后的章节中会重点涉及到.
连接ceph成功了,则取消初始化定时器,
Rgw_user_init 初始化user_info_entry cache.
RGWUserMetadataHandler 的初始化,并且加入到.handlers列表中.
初始化log 使用方法. (round_timestamp的日期)
初始化支持的rest API的类型,
对S3 API的支持.
对于swif的支持。
对swift_auth的支持
对于admin api 的支持。
对Ops log的初始化。……还没有发现太多的作用。。可能和客户端有关。
初始化各种的信号集合。
初始化FCGI的前端类型
初始化CIvetweb的前端类型
初始化loadgen框架的前端的类型。
初始化 ,运行。
添加监听器,后续章节会详细讲解。
等待主函数结束。
停止前端,结束线程,删除相关的配置。
取消信号集, 反初始化swift_finalize 、rgw_log_usage_finalize()
析构各类的资源。结束。
RGW 主函数分析
main:
说明关闭标准的错误输出,而使用标准输出替换.这是因为FCGX 将信息输出到了STDOUT.
参数:
默认参数 –debug-rgw 和 –keystring , 如果 argv 中具备输入参数, 则通过argv_to_vec替换这些默认参数.
函数 argv_to_vec 和 env_to_vec 表示将环境变量参数和输入参数都输出到args 中.
根据输入参数和默认输入参数,通过函数global_pre_init进行初始化, 在该函数中生成对下面重要的全局变量进行初始化操作. 这个函数分析会放在以后的章节中讨论,本身的几个参数也非常的重要.花费一个章节,来讨论该函数.
CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS : 默认类型, 无特权. 这个是和下面的几个对应而言的.
通过配置g_conf->rgw_frontens 获取到frontends , 该容器中存放frontend的类型.
如果这个容器为空了, 则将fastcgi存放到该容器中.
该段是对前端进行信息的初始化,并将其存放在fe_map容器中,Civetweb因为其本身是内置在Radosgw中的, 所以需要加上一些特殊的处理. 端口以及flags
获取到frontend后,继续初始化操作.
如果参数中具有-h 或者 –help, 则usage()后退出.
该函数并没有内容.
将该用做成daemon的模式.以便后台运行,
初始化超时锁,当应用初始化操时时会返回退出.
进入初始化操作.
Enable_perf_counter() 初始化计数统计.
Common_init_finish() 初始化加密类 以及 service_thread . (admin_sock 的内容被接收.)
Rgw_tools_init 初始化ext_mime_type表
Rgw_init_resolver 初始化RGWSolver类,该类用于解析host/cname后续专门章节解析RGWResolver类.
对于Curl 以及FCGX_Init的初始化,调用是外部的.so的API.
初始化RGWRados,如果失败,则取消初始化定时器.返回EIO
成功,则启动性能统计以及rest_api的初始化,对于rest 接口,在RGW描述很多,在以后的章节中会重点涉及到.
连接ceph成功了,则取消初始化定时器,
Rgw_user_init 初始化user_info_entry cache.
RGWUserMetadataHandler 的初始化,并且加入到.handlers列表中.
初始化log 使用方法. (round_timestamp的日期)
初始化支持的rest API的类型,
对S3 API的支持.
对于swif的支持。
对swift_auth的支持
对于admin api 的支持。
对Ops log的初始化。……还没有发现太多的作用。。可能和客户端有关。
初始化各种的信号集合。
初始化FCGI的前端类型
初始化CIvetweb的前端类型
初始化loadgen框架的前端的类型。
初始化 ,运行。
添加监听器,后续章节会详细讲解。
等待主函数结束。
停止前端,结束线程,删除相关的配置。
取消信号集, 反初始化swift_finalize 、rgw_log_usage_finalize()
析构各类的资源。结束。