Devin R 0c21f38cb1 Fixing failing first failing state res test
lexicographical_topological_sort test passes. Chasing bug somewhere in
resolve.
2020-07-20 22:02:29 -04:00
2020-07-17 10:07:03 -04:00

Would it be possible to abstract state res into a ruma-state-res crate? I've been thinking about something along the lines of

// The would need to be Serialize/Deserialize to save state 
struct StateResV2 {
    // Should any information be kept or should all of it be fetched from the
    // StateStore trait?,
    state_graph: Something,

    // fields for temp storage during resolution??
    conflicting_events: StateMap<Vec<EventId>>,
}

impl StateResV2 {
    /// The point of this all add nonconflicting events to the graph
    /// and resolve and add conflicting events.
    fn resolve(&mut self, events: Vec<StateMap<EventId>>) -> StateMap<EventId> { }

}

// The tricky part of making a good abstraction
trait StateStore {
    /// Return a single event based on the EventId.
    fn get_event(&self, event_id: &EventId) -> Result<StateEvent, String>;

    /// Returns the events that correspond to the `event_ids` sorted in the same order.
    fn get_events(&self, event_ids: &[EventId]) -> Result<Vec<StateEvent>, String>;

    /// Returns a Vec of the related auth events to the given `event`.
    fn auth_event_ids(&self, room_id: &RoomId, event_ids: &[EventId]) -> Result<Vec<EventId>, String>;

}

Description
No description provided
Readme MIT 14 MiB
Languages
Rust 100%