diff options
author | Erik Johnston <erik@matrix.org> | 2016-02-01 16:26:51 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2016-02-01 16:26:51 +0000 |
commit | 4bf448be254808c83aeb5ae28e601752664bc9e2 (patch) | |
tree | 238c91620cf821ed66c3f0c060d2a44734c14bd7 /synapse/handlers | |
parent | Merge pull request #543 from matrix-org/erikj/sync (diff) | |
download | synapse-4bf448be254808c83aeb5ae28e601752664bc9e2.tar.xz |
Switch over /events to use per room caches
Diffstat (limited to 'synapse/handlers')
-rw-r--r-- | synapse/handlers/room.py | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py index 58e2d25f97..aca795e1c4 100644 --- a/synapse/handlers/room.py +++ b/synapse/handlers/room.py @@ -1008,15 +1008,30 @@ class RoomEventSource(object): limit=limit, ) else: - events, end_key = yield self.store.get_room_events_stream( - user_id=user.to_string(), + room_events = yield self.store.get_room_changes_for_user( + user.to_string(), from_key, to_key + ) + + room_to_events = yield self.store.get_room_events_stream_for_rooms( + room_ids=room_ids, from_key=from_key, to_key=to_key, - limit=limit, - room_ids=room_ids, - is_guest=is_guest, + limit=limit or 10, ) + events = list(room_events) + events.extend(e for evs, _ in room_to_events.values() for e in evs) + + events.sort(key=lambda e: e.internal_metadata.after) + + if limit: + events[:] = events[:limit] + + if events: + end_key = events[-1].internal_metadata.after + else: + end_key = to_key + defer.returnValue((events, end_key)) def get_current_key(self, direction='f'): |