'Retrieve a snapshot of all rooms the user is invited or has joined.
This snapshot may include messages for all rooms where the user is
joined, depending on the pagination config.
Args:
user_id (str): The ID of the user making the request.
pagin_config (synapse.api.streams.PaginationConfig): The pagination
config used to determine how many messages *PER ROOM* to return.
as_client_event (bool): True to get events in client-server format.
include_archived (bool): True to get rooms that the user has left
Returns:
A list of dicts with "room_id" and "membership" keys for all rooms
the user is currently invited or joined in on. Rooms where the user
is joined on, may return a "messages" key with messages, depending
on the specified PaginationConfig.'

def snapshot_all_rooms(self, user_id=None, pagin_config=None, as_client_event=True, include_archived=False):

    key = (user_id, pagin_config.from_token, pagin_config.to_token, pagin_config.direction, pagin_config.limit, as_client_event, include_archived)
    now_ms = self.clock.time_msec()
    result = self.snapshot_cache.get(now_ms, key)
    if (result is not None):
        return result
    return self.snapshot_cache.set(now_ms, key, self._snapshot_all_rooms(user_id, pagin_config, as_client_event, include_archived))
