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的初始化,调用是外部的.soAPI.

 

初始化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的初始化,调用是外部的.soAPI.

 

初始化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()

析构各类的资源。结束。

 

 

posted @ 2016-12-29 12:22  大米粥的博客  阅读(574)  评论(0编辑  收藏  举报