加载配置文件解析
配置文件有: storage.conf,tracker.conf,mod_fastdfs.conf,http.conf等,配置文件中还可以用#include包含其他配置文件,
如#include http.conf。该配置文件解析模块就是读取这些配置文件,然后解析保存,方便得到其中的值。
如:
result=iniLoadFromFileEx(filename, &iniContext, true)
pBasePath = iniGetStrValue(NULL, “base_path”, &iniContext); //该函数就可以得到配置文件中base_path的值
相关参考:http://slucx.blog.chinaunix.net/uid-29504236-id-4369694.html
1. 相关数据结构
1 | typedef struct |
其中的sections是一个hash数组,用到的hash函数默认为Time33Hash函数
进行hash插入时,具体见hash_insert函数:
hash_code = pHash->hash_func(key, key_len);
ppBucket = pHash->buckets + (hash_code % (*pHash->capacity));
key是section_name, key_len是section_len,而
section_name, section_len为”[]”包围的字符串,见iniDoLoadItemsFromBuffer函数
如: [group1], section_name, section_len分别为group1和6
mod_fastdfs.conf文件中有:
1 | [group1] |
这里的group1就为section_name, section_len是6,此时current_section会指向一个新分配的IniSection,接着会将读取得到的
group_name等<key,value>对插入到current_section中去,然后插入到hash数组中去。
配置文件模块其实就是读取配置文件,然后初始化IniContext结构体。
2. 下面讲解各个函数
1 | 调用路径如下: |
1 | int iniLoadFromFile(const char *szFilename, IniContext *pContext) |
本文链接: http://damotiansheng.github.io/fastdfs/2016-11-06/fastdfs配置文件解析模块.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!