pub fn resolve<'a, E, SetIter>(
room_version: &RoomVersionId,
state_sets: impl IntoIterator<IntoIter = SetIter>,
auth_chain_sets: Vec<HashSet<E::Id>>,
fetch_event: impl Fn(&EventId) -> Option<E>,
) -> Result<StateMap<E::Id>>
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. EachStateMap
represents a possible fork in the state of a room. -
auth_chain_sets
- The full recursive set ofauth_events
for each event in thestate_sets
. -
fetch_event
- Any event not found in theevent_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.