nginx基本数据结构ngx_module_t,ngx_module_s
2015-05-28 16:34
323 查看
ngx_module_t是nginx的模块化架构最基本的数据结构。
其结构定义如下,其中的注释为功能说明:
查看文本打印
struct ngx_module_s {
ngx_uint_t ctx_index;
/*分类的模块计数器
nginx模块可以分为四种:core、event、http和mail
每个模块都会各自计数,ctx_index就是每个模块在其所属类组的计数*/
ngx_uint_t index;
/*一个模块计数器,按照每个模块在ngx_modules[]数组中的声明顺序,从0开始依次给每个模块赋值*/
ngx_uint_t spare0;
ngx_uint_t spare1;
ngx_uint_t spare2;
ngx_uint_t spare3;
ngx_uint_t version; //nginx模块版本
void *ctx;
/*模块的上下文,不同种类的模块有不同的上下文,因此实现了四种结构体*/
ngx_command_t *commands;
/*命令定义地址
模块的指令集
每一个指令在源码中对应着一个ngx_command_t结构变量*/
ngx_uint_t type; //模块类型,用于区分core event http和mail
ngx_int_t (*init_master)(ngx_log_t *log); //初始化master时执行
ngx_int_t (*init_module)(ngx_cycle_t *cycle); //初始化module时执行
ngx_int_t (*init_process)(ngx_cycle_t *cycle); //初始化process时执行
ngx_int_t (*init_thread)(ngx_cycle_t *cycle); //初始化thread时执行
void (*exit_thread)(ngx_cycle_t *cycle); //退出thread时执行
void (*exit_process)(ngx_cycle_t *cycle); //退出process时执行
void (*exit_master)(ngx_cycle_t *cycle); //退出master时执行
//以下功能不明
uintptr_t spare_hook0;
uintptr_t spare_hook1;
uintptr_t spare_hook2;
uintptr_t spare_hook3;
uintptr_t spare_hook4;
uintptr_t spare_hook5;
uintptr_t spare_hook6;
uintptr_t spare_hook7;
};
typedef struct ngx_module_s ngx_module_t;
nginx定义了很多模块,每个模块都有自己所属的类型,可以定义一些属于自己的操作函数,通过把这些函数赋值为对应类型结构体中的函数指针,就可以注册了不同的回调函数接口,以此实现不同的功能,有点c++多态的感觉!
其结构定义如下,其中的注释为功能说明:
查看文本打印
struct ngx_module_s {
ngx_uint_t ctx_index;
/*分类的模块计数器
nginx模块可以分为四种:core、event、http和mail
每个模块都会各自计数,ctx_index就是每个模块在其所属类组的计数*/
ngx_uint_t index;
/*一个模块计数器,按照每个模块在ngx_modules[]数组中的声明顺序,从0开始依次给每个模块赋值*/
ngx_uint_t spare0;
ngx_uint_t spare1;
ngx_uint_t spare2;
ngx_uint_t spare3;
ngx_uint_t version; //nginx模块版本
void *ctx;
/*模块的上下文,不同种类的模块有不同的上下文,因此实现了四种结构体*/
ngx_command_t *commands;
/*命令定义地址
模块的指令集
每一个指令在源码中对应着一个ngx_command_t结构变量*/
ngx_uint_t type; //模块类型,用于区分core event http和mail
ngx_int_t (*init_master)(ngx_log_t *log); //初始化master时执行
ngx_int_t (*init_module)(ngx_cycle_t *cycle); //初始化module时执行
ngx_int_t (*init_process)(ngx_cycle_t *cycle); //初始化process时执行
ngx_int_t (*init_thread)(ngx_cycle_t *cycle); //初始化thread时执行
void (*exit_thread)(ngx_cycle_t *cycle); //退出thread时执行
void (*exit_process)(ngx_cycle_t *cycle); //退出process时执行
void (*exit_master)(ngx_cycle_t *cycle); //退出master时执行
//以下功能不明
uintptr_t spare_hook0;
uintptr_t spare_hook1;
uintptr_t spare_hook2;
uintptr_t spare_hook3;
uintptr_t spare_hook4;
uintptr_t spare_hook5;
uintptr_t spare_hook6;
uintptr_t spare_hook7;
};
typedef struct ngx_module_s ngx_module_t;
nginx定义了很多模块,每个模块都有自己所属的类型,可以定义一些属于自己的操作函数,通过把这些函数赋值为对应类型结构体中的函数指针,就可以注册了不同的回调函数接口,以此实现不同的功能,有点c++多态的感觉!
相关文章推荐
- Nginx Rtmp Module Study 之基本数据结构ngx_module_t
- nginx基本数据结构ngx_module_t,ngx_module_s
- Nginx基本数据结构之ngx_str_t
- Nginx基本数据结构之ngx_chain_t
- Nginx基本数据结构之ngx_chain_t
- Nginx基本数据结构之ngx_buf_t
- 解剖Nginx·模块开发篇(2)ngx_http_hello_world_module 模块基本结构定义
- 解剖Nginx·模块开发篇(3)ngx_http_hello_world_module 模块的基本函数实现
- nginx源码初读(11)--让烦恼从数据结构开始(ngx_command/ngx_module/ngx_conf)
- Nginx基本数据结构之ngx_list_t
- 解剖Nginx·模块开发篇(3)ngx_http_hello_world_module 模块的基本函数实现
- Nginx基本数据结构之ngx_str_t
- Nginx基本数据结构之ngx_queue_t
- Nginx基本数据结构之ngx_array_t
- Nginx基本数据结构之ngx_str_t
- Nginx基本数据结构之ngx_str_t
- nginx 源码学习(五) 基本数据结构 ngx_list_t
- 解剖Nginx·模块开发篇(2)ngx_http_hello_world_module 模块基本结构定义
- nginx 源码学习(四) 基本数据结构 ngx_queue_t
- Nginx基本数据结构之ngx_pool_t