summaryrefslogtreecommitdiff
path: root/controller/JSONDB.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2017-04-27 00:59:36 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2017-04-27 00:59:36 -0700
commit9e80db0fd169de19d5d343e8b6998c8ace4aeb22 (patch)
tree13405cf405bfa600599d62ecde024a1b1513571c /controller/JSONDB.cpp
parente8ab6adf8902dce98b4721e2f4a5382e54bcbcbc (diff)
downloadinfinitytier-9e80db0fd169de19d5d343e8b6998c8ace4aeb22.tar.gz
infinitytier-9e80db0fd169de19d5d343e8b6998c8ace4aeb22.zip
Cleanup, fix a valgrind error, stack use reduction.
Diffstat (limited to 'controller/JSONDB.cpp')
-rw-r--r--controller/JSONDB.cpp57
1 files changed, 56 insertions, 1 deletions
diff --git a/controller/JSONDB.cpp b/controller/JSONDB.cpp
index a2fe7f2a..01eb50cd 100644
--- a/controller/JSONDB.cpp
+++ b/controller/JSONDB.cpp
@@ -107,9 +107,64 @@ bool JSONDB::writeRaw(const std::string &n,const std::string &obj)
}
}
+bool JSONDB::hasNetwork(const uint64_t networkId) const
+{
+ Mutex::Lock _l(_networks_m);
+ std::unordered_map<uint64_t,_NW>::const_iterator i(_networks.find(networkId));
+ return (i != _networks.end());
+}
+
+bool JSONDB::getNetwork(const uint64_t networkId,nlohmann::json &config) const
+{
+ Mutex::Lock _l(_networks_m);
+ std::unordered_map<uint64_t,_NW>::const_iterator i(_networks.find(networkId));
+ if (i == _networks.end())
+ return false;
+ config = i->second.config;
+ return true;
+}
+
+bool JSONDB::getNetworkSummaryInfo(const uint64_t networkId,NetworkSummaryInfo &ns) const
+{
+ Mutex::Lock _l(_networks_m);
+ std::unordered_map<uint64_t,_NW>::const_iterator i(_networks.find(networkId));
+ if (i == _networks.end())
+ return false;
+ ns = i->second.summaryInfo;
+ return true;
+}
+
+int JSONDB::getNetworkAndMember(const uint64_t networkId,const uint64_t nodeId,nlohmann::json &networkConfig,nlohmann::json &memberConfig,NetworkSummaryInfo &ns) const
+{
+ Mutex::Lock _l(_networks_m);
+ std::unordered_map<uint64_t,_NW>::const_iterator i(_networks.find(networkId));
+ if (i == _networks.end())
+ return 0;
+ std::unordered_map<uint64_t,nlohmann::json>::const_iterator j(i->second.members.find(nodeId));
+ if (j == i->second.members.end())
+ return 1;
+ networkConfig = i->second.config;
+ memberConfig = j->second;
+ ns = i->second.summaryInfo;
+ return 3;
+}
+
+bool JSONDB::getNetworkMember(const uint64_t networkId,const uint64_t nodeId,nlohmann::json &memberConfig) const
+{
+ Mutex::Lock _l(_networks_m);
+ std::unordered_map<uint64_t,_NW>::const_iterator i(_networks.find(networkId));
+ if (i == _networks.end())
+ return false;
+ std::unordered_map<uint64_t,nlohmann::json>::const_iterator j(i->second.members.find(nodeId));
+ if (j == i->second.members.end())
+ return false;
+ memberConfig = j->second;
+ return true;
+}
+
void JSONDB::saveNetwork(const uint64_t networkId,const nlohmann::json &networkConfig)
{
- char n[256];
+ char n[64];
Utils::snprintf(n,sizeof(n),"network/%.16llx",(unsigned long long)networkId);
writeRaw(n,OSUtils::jsonDump(networkConfig));
{