diff --git a/node/NodeConfig.cpp b/node/NodeConfig.cpp index ea2b59466..777b596b9 100644 --- a/node/NodeConfig.cpp +++ b/node/NodeConfig.cpp @@ -118,6 +118,29 @@ NodeConfig::~NodeConfig() _writeLocalConfig(); } +void NodeConfig::putLocalConfig(const std::string &key,const char *value) +{ + Mutex::Lock _l(_localConfig_m); + _localConfig[key] = value; + _writeLocalConfig(); +} + +void NodeConfig::putLocalConfig(const std::string &key,const std::string &value) +{ + Mutex::Lock _l(_localConfig_m); + _localConfig[key] = value; + _writeLocalConfig(); +} + +std::string NodeConfig::getLocalConfig(const std::string &key) const +{ + Mutex::Lock _l(_localConfig_m); + Dictionary::const_iterator i(_localConfig.find(key)); + if (i == _localConfig.end()) + return std::string(); + return i->second; +} + void NodeConfig::clean() { Mutex::Lock _l(_networks_m); diff --git a/node/NodeConfig.hpp b/node/NodeConfig.hpp index d7a3984ae..164bd891b 100644 --- a/node/NodeConfig.hpp +++ b/node/NodeConfig.hpp @@ -68,6 +68,24 @@ public: ~NodeConfig(); + /** + * Store something in local configuration cache + * + * By convention, keys starting with _ will not be shown in the command bus + * local config functions. + * + * @param key Configuration key + * @param value Configuration value + */ + void putLocalConfig(const std::string &key,const char *value); + void putLocalConfig(const std::string &key,const std::string &value); + + /** + * @param key Configuration key + * @return Value or empty string if not found + */ + std::string getLocalConfig(const std::string &key) const; + /** * @param nwid Network ID * @return Network or NULL if no network for that ID