watcher
watcher是什么?????
src/watcher目录
watcher定义
watcher.hpp
37-70:WhitelistWatcher定义
watcher.cpp
WhitelistWatcher也是process
内部变量:
- path:是存放白名单列表的文件路径名
- watchInterval:两次watcher之间的间隔
- subscriber:lambda函数,该变量在WhitelistWatcher构造函数中初始化
- lastWhitelist:存放上一次列表,便于比较列表内容是否改变
initialize
- 76-80
- 81-83:否则,调用watch
watch
- 95-112:读白名单列表文件,有三种可能的情况:
- 读取文件错误,报错
- 文件为空
- 得到合适的文件内容,根据文件内容初始化内部变量whitelist
- 115-117:如果与上次名单不同,则调用subscriber(whitelist)
- 120-121:延迟watchInterval后,调用WhitelistWatcher::watch(自己)
master.cpp 711-716行的定义:
whitelistWatcher = new WhitelistWatcher(
flags.whitelist,
WHITELIST_WATCH_INTERVAL,
[this](const Option<hashset<string>>& whitelist) {
return allocator->updateWhitelist(whitelist);
});
subscriber对应的函数是调用allocator->updateWhitelist
,其参数则是watcher.cpp中的whitelist