diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2019-08-04 19:55:52 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2019-08-04 19:55:52 -0700 |
commit | a77b4ecddb43cd8581c7ebaeb8fcc9b5dac10573 (patch) | |
tree | a594e06141299d32a4da746c6d5c214fb484100d /controller/PostgreSQL.cpp | |
parent | 818b7e4a2e35adfc241aed38e90b34580e6b5d9d (diff) | |
download | infinitytier-a77b4ecddb43cd8581c7ebaeb8fcc9b5dac10573.tar.gz infinitytier-a77b4ecddb43cd8581c7ebaeb8fcc9b5dac10573.zip |
Add optional function in DB change listener for member online events.
Diffstat (limited to 'controller/PostgreSQL.cpp')
-rw-r--r-- | controller/PostgreSQL.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/controller/PostgreSQL.cpp b/controller/PostgreSQL.cpp index e2bcfe58..709712b5 100644 --- a/controller/PostgreSQL.cpp +++ b/controller/PostgreSQL.cpp @@ -210,11 +210,18 @@ void PostgreSQL::eraseMember(const uint64_t networkId, const uint64_t memberId) void PostgreSQL::nodeIsOnline(const uint64_t networkId, const uint64_t memberId, const InetAddress &physicalAddress) { - std::lock_guard<std::mutex> l(_lastOnline_l); - std::pair<int64_t, InetAddress> &i = _lastOnline[std::pair<uint64_t,uint64_t>(networkId, memberId)]; - i.first = OSUtils::now(); - if (physicalAddress) { - i.second = physicalAddress; + { + std::lock_guard<std::mutex> l(_lastOnline_l); + std::pair<int64_t, InetAddress> &i = _lastOnline[std::pair<uint64_t,uint64_t>(networkId, memberId)]; + i.first = OSUtils::now(); + if (physicalAddress) { + i.second = physicalAddress; + } + } + { + std::lock_guard<std::mutex> l2(_changeListeners_l); + for(auto i=_changeListeners.begin();i!=_changeListeners.end();++i) + (*i)->onNetworkMemberOnline(networkId,memberId,physicalAddress); } } |