SystemMaybe PluginArgParser::parse()

in src/oomd/util/PluginArgParser.cpp [54:94]


SystemMaybe<Unit> PluginArgParser::parse(const Engine::PluginArgs& args) {
  for (const auto& argName : requiredArgs_) {
    if (args.find(argName) == args.end()) {
      OLOG << "Required arg \"" << argName << "\" missing in plugin \""
           << pluginName_ << "\"";
      return SYSTEM_ERROR(
          EINVAL,
          "Required arg \"",
          argName,
          "\" missing in plugin \"",
          pluginName_,
          "\"");
    }
  }
  for (const auto& entry : args) {
    if (argValueFillingFuncs_.find(entry.first) !=
        argValueFillingFuncs_.end()) {
      auto funcRes = argValueFillingFuncs_.at(entry.first)(entry.second);
      if (!funcRes) {
        return SYSTEM_ERROR(
            EINVAL,
            "Failed parsing arg for plugin \"",
            pluginName_,
            "\", error: ",
            funcRes.error().what());
      }
    } else {
      OLOG << "Unknown arg \"" << entry.first << "\" in plugin \""
           << pluginName_ << "\"";
      return SYSTEM_ERROR(
          EINVAL,
          "Unknown arg \"",
          entry.first,
          "\" in plugin \"",
          pluginName_,
          "\"");
    }
  }

  return noSystemError();
}