Support immediate notify of connection listener.

Also only perform immediate notification to the callback actually
requesting the notification, not all existing callbacks.

Offset returned uids by 1 so uid=0 can be used to indicate immediate
notification.
This commit is contained in:
Peter Johnson
2015-08-28 00:13:56 -07:00
parent 302cc064c6
commit b488cdd6ff
10 changed files with 65 additions and 23 deletions

View File

@@ -606,11 +606,12 @@ std::vector<EntryInfo> Storage::GetEntryInfo(StringRef prefix,
return infos;
}
void Storage::NotifyEntries(StringRef prefix) {
void Storage::NotifyEntries(StringRef prefix,
EntryListenerCallback only) const {
std::lock_guard<std::mutex> lock(m_mutex);
for (auto& i : m_entries) {
if (!i.getKey().startswith(prefix)) continue;
m_notifier.NotifyEntry(i.getKey(), i.getValue()->value, false);
m_notifier.NotifyEntry(i.getKey(), i.getValue()->value, false, only);
}
}