summaryrefslogtreecommitdiff
path: root/node/Topology.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/Topology.cpp')
-rw-r--r--node/Topology.cpp31
1 files changed, 21 insertions, 10 deletions
diff --git a/node/Topology.cpp b/node/Topology.cpp
index 8b5deffc..2b973386 100644
--- a/node/Topology.cpp
+++ b/node/Topology.cpp
@@ -136,7 +136,7 @@ SharedPtr<Peer> Topology::addPeer(const SharedPtr<Peer> &peer)
SharedPtr<Peer> &p = _peers.set(peer->address(),peer);
p->use(now);
- _saveIdentity(p->identity());
+ saveIdentity(p->identity());
return p;
}
@@ -172,6 +172,26 @@ SharedPtr<Peer> Topology::getPeer(const Address &zta)
return SharedPtr<Peer>();
}
+Identity Topology::getIdentity(const Address &zta)
+{
+ {
+ Mutex::Lock _l(_lock);
+ SharedPtr<Peer> &ap = _peers[zta];
+ if (ap)
+ return ap->identity();
+ }
+ return _getIdentity(zta);
+}
+
+void saveIdentity(const Identity &id)
+{
+ if (id) {
+ char p[128];
+ Utils::snprintf(p,sizeof(p),"iddb.d/%.10llx",(unsigned long long)id.address().toInt());
+ RR->node->dataStorePut(p,id.toString(false),false);
+ }
+}
+
SharedPtr<Peer> Topology::getBestRoot(const Address *avoid,unsigned int avoidCount,bool strictAvoid)
{
SharedPtr<Peer> bestRoot;
@@ -315,15 +335,6 @@ Identity Topology::_getIdentity(const Address &zta)
return Identity();
}
-void Topology::_saveIdentity(const Identity &id)
-{
- if (id) {
- char p[128];
- Utils::snprintf(p,sizeof(p),"iddb.d/%.10llx",(unsigned long long)id.address().toInt());
- RR->node->dataStorePut(p,id.toString(false),false);
- }
-}
-
void Topology::_setWorld(const World &newWorld)
{
// assumed _lock is locked (or in constructor)