Ejemplo n.º 1
0
def resolve_events_with_store(room_version, state_sets, event_map, state_res_store):
    """
    Args:
        room_version(str): Version of the room

        state_sets(list): List of dicts of (type, state_key) -> event_id,
            which are the different state groups to resolve.

        event_map(dict[str,FrozenEvent]|None):
            a dict from event_id to event, for any events that we happen to
            have in flight (eg, those currently being persisted). This will be
            used as a starting point fof finding the state we need; any missing
            events will be requested via state_map_factory.

            If None, all events will be fetched via state_map_factory.

        state_res_store (StateResolutionStore)

    Returns
        Deferred[dict[(str, str), str]]:
            a map from (type, state_key) to event_id.
    """
    v = KNOWN_ROOM_VERSIONS[room_version]
    if v.state_res == StateResolutionVersions.V1:
        return v1.resolve_events_with_store(
            state_sets, event_map, state_res_store.get_events,
        )
    else:
        return v2.resolve_events_with_store(
            room_version, state_sets, event_map, state_res_store,
        )
Ejemplo n.º 2
0
def resolve_events_with_store(room_version, state_sets, event_map,
                              state_res_store):
    """
    Args:
        room_version(str): Version of the room

        state_sets(list): List of dicts of (type, state_key) -> event_id,
            which are the different state groups to resolve.

        event_map(dict[str,FrozenEvent]|None):
            a dict from event_id to event, for any events that we happen to
            have in flight (eg, those currently being persisted). This will be
            used as a starting point fof finding the state we need; any missing
            events will be requested via state_map_factory.

            If None, all events will be fetched via state_map_factory.

        state_res_store (StateResolutionStore)

    Returns
        Deferred[dict[(str, str), str]]:
            a map from (type, state_key) to event_id.
    """
    if room_version == RoomVersions.V1:
        return v1.resolve_events_with_store(
            state_sets,
            event_map,
            state_res_store.get_events,
        )
    elif room_version in (
            RoomVersions.STATE_V2_TEST,
            RoomVersions.V2,
            RoomVersions.V3,
    ):
        return v2.resolve_events_with_store(
            room_version,
            state_sets,
            event_map,
            state_res_store,
        )
    else:
        # This should only happen if we added a version but forgot to add it to
        # the list above.
        raise Exception(
            "No state resolution algorithm defined for version %r" %
            (room_version, ))
Ejemplo n.º 3
0
def resolve_events_with_store(
    clock: Clock,
    room_id: str,
    room_version: str,
    state_sets: List[StateMap[str]],
    event_map: Optional[Dict[str, EventBase]],
    state_res_store: "StateResolutionStore",
):
    """
    Args:
        room_id: the room we are working in

        room_version: Version of the room

        state_sets: List of dicts of (type, state_key) -> event_id,
            which are the different state groups to resolve.

        event_map:
            a dict from event_id to event, for any events that we happen to
            have in flight (eg, those currently being persisted). This will be
            used as a starting point fof finding the state we need; any missing
            events will be requested via state_map_factory.

            If None, all events will be fetched via state_res_store.

        state_res_store: a place to fetch events from

    Returns:
        Deferred[dict[(str, str), str]]:
            a map from (type, state_key) to event_id.
    """
    v = KNOWN_ROOM_VERSIONS[room_version]
    if v.state_res == StateResolutionVersions.V1:
        return v1.resolve_events_with_store(room_id, state_sets, event_map,
                                            state_res_store.get_events)
    else:
        return v2.resolve_events_with_store(clock, room_id, room_version,
                                            state_sets, event_map,
                                            state_res_store)
Ejemplo n.º 4
0
def resolve_events_with_store(room_version, state_sets, event_map, state_res_store):
    """
    Args:
        room_version(str): Version of the room

        state_sets(list): List of dicts of (type, state_key) -> event_id,
            which are the different state groups to resolve.

        event_map(dict[str,FrozenEvent]|None):
            a dict from event_id to event, for any events that we happen to
            have in flight (eg, those currently being persisted). This will be
            used as a starting point fof finding the state we need; any missing
            events will be requested via state_map_factory.

            If None, all events will be fetched via state_map_factory.

        state_res_store (StateResolutionStore)

    Returns
        Deferred[dict[(str, str), str]]:
            a map from (type, state_key) to event_id.
    """
    if room_version == RoomVersions.V1:
        return v1.resolve_events_with_store(
            state_sets, event_map, state_res_store.get_events,
        )
    elif room_version in (RoomVersions.VDH_TEST, RoomVersions.STATE_V2_TEST):
        return v2.resolve_events_with_store(
            state_sets, event_map, state_res_store,
        )
    else:
        # This should only happen if we added a version but forgot to add it to
        # the list above.
        raise Exception(
            "No state resolution algorithm defined for version %r" % (room_version,)
        )