in src/oomd/dropin/FsDropInService.cpp [222:256]
void FsDropInService::processDropInAdd(const std::string& file) {
// Ignore dot files
if (file.empty() || (file.size() && file.at(0) == '.')) {
return;
}
OLOG << "Adding drop in config=" << file;
std::ifstream dropin_file(drop_in_dir_ + '/' + file, std::ios::in);
if (!dropin_file.is_open()) {
OLOG << "Could not open drop in config=" << file;
return;
}
std::stringstream buf;
buf << dropin_file.rdbuf();
Config2::JsonConfigParser json_parser;
std::unique_ptr<Config2::IR::Root> dropin_root;
try {
dropin_root = json_parser.parse(buf.str());
} catch (const std::exception& e) {
OLOG << "Caught: " << e.what();
OLOG << "Failed to inject drop in config into engine";
return;
}
if (!dropin_root) {
OLOG << "Could not parse drop in config=" << file;
OLOG << "Failed to inject drop in config into engine";
return;
}
if (!scheduleDropInAdd(file, *dropin_root)) {
OLOG << "Could not compile drop in config";
OLOG << "Failed to inject drop in config into engine";
}
}