Use another deferred list

pull/4/merge
Erik Johnston 10 years ago
parent b849a64f8d
commit eceb554a2f
  1. 45
      synapse/handlers/message.py

@ -380,15 +380,6 @@ class MessageHandler(BaseHandler):
if limit is None: if limit is None:
limit = 10 limit = 10
messages, token = yield self.store.get_recent_events_for_room(
room_id,
limit=limit,
end_token=now_token.room_key,
)
start_token = now_token.copy_and_replace("room_key", token[0])
end_token = now_token.copy_and_replace("room_key", token[1])
room_members = [ room_members = [
m for m in current_state.values() m for m in current_state.values()
if m.type == EventTypes.Member if m.type == EventTypes.Member
@ -396,20 +387,38 @@ class MessageHandler(BaseHandler):
] ]
presence_handler = self.hs.get_handlers().presence_handler presence_handler = self.hs.get_handlers().presence_handler
presence_defs = yield defer.DeferredList(
@defer.inlineCallbacks
def get_presence():
presence_defs = yield defer.DeferredList(
[
presence_handler.get_state(
target_user=UserID.from_string(m.user_id),
auth_user=auth_user,
as_event=True,
check_auth=False,
)
for m in room_members
],
consumeErrors=True,
)
defer.returnValue([p for success, p in presence_defs if success])
presence, (messages, token) = yield defer.gatherResults(
[ [
presence_handler.get_state( get_presence(),
target_user=UserID.from_string(m.user_id), self.store.get_recent_events_for_room(
auth_user=auth_user, room_id,
as_event=True, limit=limit,
check_auth=False, end_token=now_token.room_key,
) )
for m in room_members
], ],
consumeErrors=True, consumeErrors=True,
) ).addErrback(unwrapFirstError)
presence = [p for success, p in presence_defs if success] start_token = now_token.copy_and_replace("room_key", token[0])
end_token = now_token.copy_and_replace("room_key", token[1])
time_now = self.clock.time_msec() time_now = self.clock.time_msec()

Loading…
Cancel
Save