diff options
author | Erik Johnston <erikj@jki.re> | 2018-05-09 16:16:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-09 16:16:56 +0100 |
commit | bfe1f7385582d7f1348447895e836938c0169900 (patch) | |
tree | bb1c913bcc67fe941892fde640beea2441cc0f07 /synapse/handlers/sync.py | |
parent | Merge pull request #3198 from matrix-org/erikj/fixup_return_pagination (diff) | |
parent | Add comment to sync as to why code path is split (diff) | |
download | synapse-bfe1f7385582d7f1348447895e836938c0169900.tar.xz |
Merge pull request #3199 from matrix-org/erikj/pagination_sync
Refactor sync APIs to reuse pagination API
Diffstat (limited to 'synapse/handlers/sync.py')
-rw-r--r-- | synapse/handlers/sync.py | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/synapse/handlers/sync.py b/synapse/handlers/sync.py index c25a76d215..263e42dded 100644 --- a/synapse/handlers/sync.py +++ b/synapse/handlers/sync.py @@ -354,12 +354,24 @@ class SyncHandler(object): since_key = since_token.room_key while limited and len(recents) < timeline_limit and max_repeat: - events, end_key = yield self.store.get_room_events_stream_for_room( - room_id, - limit=load_limit + 1, - from_key=since_key, - to_key=end_key, - ) + # If we have a since_key then we are trying to get any events + # that have happened since `since_key` up to `end_key`, so we + # can just use `get_room_events_stream_for_room`. + # Otherwise, we want to return the last N events in the room + # in toplogical ordering. + if since_key: + events, end_key = yield self.store.get_room_events_stream_for_room( + room_id, + limit=load_limit + 1, + from_key=since_key, + to_key=end_key, + ) + else: + events, end_key = yield self.store.get_recent_events_for_room( + room_id, + limit=load_limit + 1, + end_token=end_key, + ) loaded_recents = sync_config.filter_collection.filter_room_timeline( events ) |