Function ruma_state_res::resolve[][src]

pub fn resolve<'a, E, SSI>(
    room_version: &RoomVersionId,
    state_sets: impl IntoIterator<IntoIter = SSI>,
    auth_chain_sets: Vec<HashSet<EventId>>,
    fetch_event: impl Fn(&EventId) -> Option<E>
) -> Result<StateMap<EventId>> where
    E: Event + Clone,
    SSI: Iterator<Item = &'a StateMap<EventId>> + Clone
Expand description

Resolve sets of state events as they come in. Internally StateResolution builds a graph and an auth chain to allow for state conflict resolution.

Arguments

  • state_sets - The incoming state to resolve. Each StateMap represents a possible fork in the state of a room.

  • auth_chain_sets - The full recursive set of auth_events for each event in the state_sets.

  • fetch_event - Any event not found in the event_map will defer to this closure to find the event.

Invariants

The caller of resolve must ensure that all the events are from the same room. Although this function takes a RoomId it does not check that each event is part of the same room.