atagen

macltok

public
Star0
Watch0
d9b96952ec6003585d618d852b489c48fc386d5d
3
ssh://brewery@pls.lobotomise.me:33/atagen/macltok.git

Blame: src/repair_model.rs

c9f0fd0ee1ccatagen2026-10-25 06:16 UTC1
use ruma::{OwnedEventId, OwnedRoomId, OwnedTransactionId};
80381e06a573atagen2026-10-25 03:02 UTC2
80381e06a573atagen2026-10-25 03:02 UTC3
#[cfg(feature = "serde")]
80381e06a573atagen2026-10-25 03:02 UTC4
use serde::{Deserialize, Serialize};
80381e06a573atagen2026-10-25 03:02 UTC5
80381e06a573atagen2026-10-25 03:02 UTC6
use crate::Error;
80381e06a573atagen2026-10-25 03:02 UTC7
80381e06a573atagen2026-10-25 03:02 UTC8
#[derive(Clone, Debug, PartialEq)]
80381e06a573atagen2026-10-25 03:02 UTC9
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
d9b96952ec60atagen2026-10-25 09:07 UTC10
#[non_exhaustive]
80381e06a573atagen2026-10-25 03:02 UTC11
pub enum HistoryRepairCommand {
d9b96952ec60atagen2026-10-25 09:07 UTC12
    /// runs the open-time recent load again, joining one already running. the outcome
d9b96952ec60atagen2026-10-25 09:07 UTC13
    /// arrives as `RecentHistoryChanged`
d9b96952ec60atagen2026-10-25 09:07 UTC14
    RetryRecent { room_id: OwnedRoomId },
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC15
    FillGap {
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC16
        room_id: OwnedRoomId,
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC17
        gap_id: OwnedTransactionId,
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC18
    },
d9b96952ec60atagen2026-10-25 09:07 UTC19
    /// stops whichever history operation the room is running
d9b96952ec60atagen2026-10-25 09:07 UTC20
    Cancel { room_id: OwnedRoomId },
80381e06a573atagen2026-10-25 03:02 UTC21
}
80381e06a573atagen2026-10-25 03:02 UTC22
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC23
#[derive(Clone, Debug, PartialEq, Eq)]
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC24
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC25
pub struct HistoryGap {
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC26
    pub id: OwnedTransactionId,
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC27
    pub older_boundary: Option<OwnedEventId>,
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC28
    pub newer_boundary: Option<OwnedEventId>,
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC29
    pub lifecycle: HistoryGapLifecycle,
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC30
    pub failure: Option<String>,
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC31
}
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC32
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC33
#[derive(Clone, Debug, PartialEq, Eq)]
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC34
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC35
pub enum HistoryGapLifecycle {
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC36
    Idle,
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC37
    Paused,
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC38
    Failed,
d9b96952ec60atagen2026-10-25 09:07 UTC39
    /// accessible history ends before the older section, so this interval stays
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC40
    Unavailable,
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC41
}
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC42
c9f0fd0ee1ccatagen2026-10-25 06:16 UTC43
#[derive(Clone, Debug, PartialEq, Eq)]
80381e06a573atagen2026-10-25 03:02 UTC44
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
80381e06a573atagen2026-10-25 03:02 UTC45
pub enum HistoryContinuity {
80381e06a573atagen2026-10-25 03:02 UTC46
    Unresolved,
80381e06a573atagen2026-10-25 03:02 UTC47
    Verified,
80381e06a573atagen2026-10-25 03:02 UTC48
    AccessibleStart,
80381e06a573atagen2026-10-25 03:02 UTC49
}
80381e06a573atagen2026-10-25 03:02 UTC50
80381e06a573atagen2026-10-25 03:02 UTC51
#[derive(Clone, Debug, PartialEq)]
80381e06a573atagen2026-10-25 03:02 UTC52
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
80381e06a573atagen2026-10-25 03:02 UTC53
pub enum HistoryRepairPhase {
80381e06a573atagen2026-10-25 03:02 UTC54
    Bridging,
80381e06a573atagen2026-10-25 03:02 UTC55
    Ready,
80381e06a573atagen2026-10-25 03:02 UTC56
    Paused,
80381e06a573atagen2026-10-25 03:02 UTC57
}
80381e06a573atagen2026-10-25 03:02 UTC58
80381e06a573atagen2026-10-25 03:02 UTC59
#[derive(Clone, Debug, PartialEq)]
80381e06a573atagen2026-10-25 03:02 UTC60
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
80381e06a573atagen2026-10-25 03:02 UTC61
pub enum HistoryRepairStop {
80381e06a573atagen2026-10-25 03:02 UTC62
    Cancelled,
80381e06a573atagen2026-10-25 03:02 UTC63
    Budget,
80381e06a573atagen2026-10-25 03:02 UTC64
    HistoryUnavailable,
80381e06a573atagen2026-10-25 03:02 UTC65
    CursorStalled,
80381e06a573atagen2026-10-25 03:02 UTC66
}
80381e06a573atagen2026-10-25 03:02 UTC67
d9b96952ec60atagen2026-10-25 09:07 UTC68
/// one gap fill. `Bridging` when it starts, then once more when it settles
80381e06a573atagen2026-10-25 03:02 UTC69
#[derive(Clone, Debug, PartialEq)]
80381e06a573atagen2026-10-25 03:02 UTC70
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
80381e06a573atagen2026-10-25 03:02 UTC71
pub struct HistoryRepairReport {
80381e06a573atagen2026-10-25 03:02 UTC72
    pub room_id: OwnedRoomId,
d9b96952ec60atagen2026-10-25 09:07 UTC73
    pub gap_id: OwnedTransactionId,
80381e06a573atagen2026-10-25 03:02 UTC74
    pub pages: u32,
80381e06a573atagen2026-10-25 03:02 UTC75
    pub events: u32,
80381e06a573atagen2026-10-25 03:02 UTC76
    pub phase: HistoryRepairPhase,
80381e06a573atagen2026-10-25 03:02 UTC77
    pub continuity: HistoryContinuity,
80381e06a573atagen2026-10-25 03:02 UTC78
    pub stop: Option<HistoryRepairStop>,
80381e06a573atagen2026-10-25 03:02 UTC79
    pub failure: Option<Error>,
80381e06a573atagen2026-10-25 03:02 UTC80
}