pub fn resolve<'a, E, SSI>(
state_sets: impl IntoIterator<IntoIter = SSI>,
fetch_event: impl Fn(&EventId) -> Option<E>
) -> Result<StateMap<EventId>> where
E: Event + Clone,
SSI: Iterator<Item = &'a StateMap<EventId>> + Clone,
Resolve sets of state events as they come in. Internally
StateResolution builds a graph and an
auth chain to allow for state conflict resolution.
state_sets- The incoming state to resolve. Each
StateMaprepresents a possible fork in the state of a room.
auth_chain_sets- The full recursive set of
auth_eventsfor each event in the
fetch_event- Any event not found in the
event_mapwill defer to this closure to find the event.
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.