diff options
author | Grant Limberg <glimberg@gmail.com> | 2015-06-26 17:44:09 -0700 |
---|---|---|
committer | Grant Limberg <glimberg@gmail.com> | 2015-06-26 17:44:09 -0700 |
commit | 9c26d10ea645dc1727813ea72a63f526cf0757d0 (patch) | |
tree | 25ae8e785f07f93f187a34abe204c423613a009b /node/Node.hpp | |
parent | bfb152f53f528934583ee76437453a005610a7ea (diff) | |
parent | 3f71afd0fbb2d87a2c9288166299600da51470dc (diff) | |
download | infinitytier-9c26d10ea645dc1727813ea72a63f526cf0757d0.tar.gz infinitytier-9c26d10ea645dc1727813ea72a63f526cf0757d0.zip |
Merge branch 'adamierymenko-dev' into android-jni
Diffstat (limited to 'node/Node.hpp')
-rw-r--r-- | node/Node.hpp | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/node/Node.hpp b/node/Node.hpp index 1d9372e4..2d2898b5 100644 --- a/node/Node.hpp +++ b/node/Node.hpp @@ -155,19 +155,19 @@ public: len); } - inline SharedPtr<Network> network(uint64_t nwid) + inline SharedPtr<Network> network(uint64_t nwid) const { Mutex::Lock _l(_networks_m); - std::map< uint64_t,SharedPtr<Network> >::iterator nw(_networks.find(nwid)); - return ((nw == _networks.end()) ? SharedPtr<Network>() : nw->second); + return _network(nwid); } inline std::vector< SharedPtr<Network> > allNetworks() const { - Mutex::Lock _l(_networks_m); std::vector< SharedPtr<Network> > nw; - for(std::map< uint64_t,SharedPtr<Network> >::const_iterator n(_networks.begin());n!=_networks.end();++n) - nw.push_back(n->second); + Mutex::Lock _l(_networks_m); + nw.reserve(_networks.size()); + for(std::vector< std::pair< uint64_t, SharedPtr<Network> > >::const_iterator i=_networks.begin();i!=_networks.end();++i) + nw.push_back(i->second); return nw; } @@ -208,6 +208,16 @@ public: #endif private: + inline SharedPtr<Network> _network(uint64_t nwid) const + { + // assumes _networks_m is locked + for(std::vector< std::pair< uint64_t, SharedPtr<Network> > >::const_iterator i=_networks.begin();i!=_networks.end();++i) { + if (i->first == nwid) + return i->second; + } + return SharedPtr<Network>(); + } + RuntimeEnvironment _RR; RuntimeEnvironment *RR; @@ -223,7 +233,7 @@ private: //Dictionary _localConfig; // persisted as local.conf //Mutex _localConfig_m; - std::map< uint64_t,SharedPtr<Network> > _networks; + std::vector< std::pair< uint64_t, SharedPtr<Network> > > _networks; Mutex _networks_m; Mutex _backgroundTasksLock; |