typedef struct RunModeOutput_ {
const char *name;
TmModule *tm_module;
OutputCtx *output_ctx;
TAILQ_ENTRY(RunModeOutput_) entries;
} RunModeOutput;
TAILQ_HEAD(, RunModeOutput_) RunModeOutputs =
TAILQ_HEAD_INITIALIZER(RunModeOutputs);
1. 线程slot模块,数组
TmModule tmm_modules[]:
__packet_logger__
__tx_logger__
__file_logger__
__filedata_logger__
还包含ReceivePcap, ReceiveDpdk, DecodePcap, DecodeDodk, StreammTcp等
2. 包装线程slot模块的结构体,是个链表
RunModeOutput RunModeOutputs
3. 子输出模块,是个链表,被2的输出主模块遍历调用
OutputModule output_modules
以上三个日志输出模块结构体简单说明:
TmModule类型:这个就是线程slot运行的模块结构体,是slot的运行单位。
RunModeOutput类型:专门定义了一个表示输出模块的结构体,其中嵌入了TmModule类型,存储了日志输出主模块的指针,每一个输出主模块都将用一个RunModeOutput实例表示,并注册到全局变量RunModeOut