标签:style blog http io ar color os sp strong
二、Twemproxy 入口main函数分析
Twemproxy是以c语言编写的,其整体入口在main函数中。
grep “main”,我们可以看到在文件nc.c中的main函数。开篇我们可以看到定义了一个变量,
struct instance nci;
下边我们看下这个instance的定义:
struct instance {
struct context *ctx;
int log_level;
char *log_filename;
char *conf_filename;
uint16_t stats_port;
int stats_interval;
char *stats_addr;
char hostname[NC_MAXHOSTNAMELEN];
size_t mbuf_chunk_size;
pid_t pid;
char *pid_filename;
unsigned pidfile:1;
};
如果配置了-t选项 则nc_test_conf : 用于对配置文件做检查,以确保配置文件格式的正确。
之后调用nc_pre_run,启动之前做一些预处理,包括:初始化日志级别以及日志文件;设置是否后台运行;对信号做初始化处理;是否创建pid文件。
接下来调用nc_run开始启动proxy;这个函数完成的工作就是调用core_start创建context,然后进入死循环调用core_loop开始整个事件循环的处理,接受请求并处理。当然,core_start以及core_loop这两个函数里边还包含了大量的处理工作,包括,配置文件解析以及读取,相关组件(server_pool,conf,context)的初始化等等,这些后边详细讲述。
二、Twemproxy 入口main函数分析
Twemproxy是以c语言编写的,其整体入口在main函数中。
grep “main”,我们可以看到在文件nc.c中的main函数。开篇我们可以看到定义了一个变量,
struct instance nci;
下边我们看下这个instance的定义:
struct instance {
struct context *ctx;
int log_level;
char *log_filename;
char *conf_filename;
uint16_t stats_port;
int stats_interval;
char *stats_addr;
char hostname[NC_MAXHOSTNAMELEN];
size_t mbuf_chunk_size;
pid_t pid;
char *pid_filename;
unsigned pidfile:1;
};
如果配置了-t选项 则nc_test_conf : 用于对配置文件做检查,以确保配置文件格式的正确。
之后调用nc_pre_run,启动之前做一些预处理,包括:初始化日志级别以及日志文件;设置是否后台运行;对信号做初始化处理;是否创建pid文件。
接下来调用nc_run开始启动proxy;这个函数完成的工作就是调用core_start创建context,然后进入死循环调用core_loop开始整个事件循环的处理,接受请求并处理。当然,core_start以及core_loop这两个函数里边还包含了大量的处理工作,包括,配置文件解析以及读取,相关组件(server_pool,conf,context)的初始化等等,这些后边详细讲述。
标签:style blog http io ar color os sp strong
原文地址:http://www.cnblogs.com/shenhang/p/4156042.html