Twemproxy初始化过程比较简单,这里把Twemproxy初始化过程分成两部分:(1)读取运行选项;(2)运行前的初始化和准备;
(1) 读取运行选项
读取各项参数的设置,比如是否后台运行(daemonize)、日志级别、日志文件、配置文件名称等信息。
正如前一章(概述)里讲到的,Twemproxy使用了一个全局变量nc(类型为struct instance)保存所有的信息,包括选项配置信息。
(2) 运行前的初始化和准备(nc_pre_run);
图1. 运行前准备流程图
附上正式接收请求的运行前准备源码,逻辑清晰,都不需要注释:
static rstatus_t
nc_pre_run(struct instance *nci)
{
rstatus_t status;
status = log_init(nci->log_level, nci->log_filename);
if (status != NC_OK) {
return status;
}
if (daemonize) {
status = nc_daemonize(1);
if (status != NC_OK) {
return status;
}
}
nci->pid = getpid();
status = signal_init();
if (status != NC_OK) {
return status;
}
if (nci->pid_filename) {
status = nc_create_pidfile(nci);
if (status != NC_OK) {
return status;
}
}
nc_print_run(nci);
return NC_OK;
}