Use the presence cachemap ordering to early-abort the iteration loop

pull/4/merge
Paul "LeoNerd" Evans 10 years ago
parent f683b5de47
commit 45543028bb
  1. 9
      synapse/handlers/presence.py

@ -875,10 +875,15 @@ class PresenceEventSource(object):
updates = []
# TODO(paul): use a DeferredList ? How to limit concurrency.
for observed_user in cachemap.keys():
for observed_user in reversed(cachemap.keys()):
cached = cachemap[observed_user]
if cached.serial <= from_key or cached.serial > max_serial:
# Since this is ordered in descending order of serial, we can just
# stop once we've seen enough
if cached.serial <= from_key:
break
if cached.serial > max_serial:
continue
if not (yield self.is_visible(observer_user, observed_user)):

Loading…
Cancel
Save