它主要完成对参数config的各结构体成员的初始化工作。
(2) mqtt3_config_cleanup
该函数的声明为:
void mqtt3_config_cleanup(struct mqtt3_config *config)
它主要完成对参数config的各成员的清除、释放等操作。
(3) mqtt3_config_read
该函数的声明为:
int mqtt3_config_read(struct mqtt3_config *config, bool reload)
它主要完成从配置文件中读取各配置参数到结构体config中,具体的配置文件读取工作由函数_config_read_file完成。
(4) mqtt3_config_parse_args
该函数的声明为:
int mqtt3_config_parse_args(struct mqtt3_config *config, intargc, char *argv[])
它主要完成对用户输出参数的解析工作。
Mosquitto的配置文件内部共提供对整形、布尔类型,字符串三种类型的解析函数,这三个解析函数只共内部调用,分别是:_conf_parse_bool、_conf_parse_int、_conf_parse_string。
4.3、内存操作的封装
Mosquitto对内存操作的封装代码主要在文件mosquitto-1.2/src/memory_mosq.c中实现,共实现了对常用的内存申请与释放相关的系统调用函数,共有:_mosquitto_calloc函数是对系统函数calloc的封装,_mosquitto_malloc函数对系统函数malloc的封装,_mosquitto_realloc函数对系统函数realloc的封装,_mosquitto_free函数对系统函数free的封装,_mosquitto_strdup函数对系统函数strdup的封装。在上述封装函数中如果文件中定义了宏REAL_WITH_MEMORY_TRACKING,则这些封装函数只是对系统函数进行封装,不做任何额外操作。如果定义了REAL_WITH_MEMORY_TRACKING宏,则会在内存申请和释放时分别记录所申请或释放内存的大小。