|
|
|
@ -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)): |
|
|
|
|