summaryrefslogtreecommitdiff
path: root/node/Network.hpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2016-09-07 15:47:20 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2016-09-07 15:47:20 -0700
commitdaf8a66ced4ce2bf48ec005d915899d888458b06 (patch)
treef1e935f6f63a0986dde18d60e6cc709d3d27bd50 /node/Network.hpp
parent20278bb9e47ec0cc16619d281224473f90f7b048 (diff)
downloadinfinitytier-daf8a66ced4ce2bf48ec005d915899d888458b06.tar.gz
infinitytier-daf8a66ced4ce2bf48ec005d915899d888458b06.zip
More correct and efficient to initialize member relationship push stuff lazily when member is learned.
Diffstat (limited to 'node/Network.hpp')
-rw-r--r--node/Network.hpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/node/Network.hpp b/node/Network.hpp
index 4d0e25b7..bcef2872 100644
--- a/node/Network.hpp
+++ b/node/Network.hpp
@@ -353,7 +353,7 @@ public:
if (com.networkId() != _id)
return -1;
Mutex::Lock _l(_lock);
- return _memberships[com.issuedTo()].addCredential(RR,this,com);
+ return _membership(com.issuedTo()).addCredential(RR,com);
}
/**
@@ -365,7 +365,7 @@ public:
if (cap.networkId() != _id)
return -1;
Mutex::Lock _l(_lock);
- return _memberships[cap.issuedTo()].addCredential(RR,cap);
+ return _membership(cap.issuedTo()).addCredential(RR,cap);
}
/**
@@ -377,7 +377,7 @@ public:
if (tag.networkId() != _id)
return -1;
Mutex::Lock _l(_lock);
- return _memberships[tag.issuedTo()].addCredential(RR,tag);
+ return _membership(tag.issuedTo()).addCredential(RR,tag);
}
/**
@@ -388,7 +388,7 @@ public:
inline void blacklistBefore(const Address &peerAddress,const uint64_t ts)
{
Mutex::Lock _l(_lock);
- _memberships[peerAddress].blacklistBefore(ts);
+ _membership(peerAddress).blacklistBefore(ts);
}
/**
@@ -412,6 +412,7 @@ private:
void _announceMulticastGroups(const MulticastGroup *const onlyThis);
void _announceMulticastGroupsTo(const Address &peer,const std::vector<MulticastGroup> &allMulticastGroups);
std::vector<MulticastGroup> _allMulticastGroups() const;
+ Membership &_membership(const Address &a); // also lazily sends COM and MULTICAST_LIKE(s) if this is a new member
const RuntimeEnvironment *RR;
void *_uPtr;