coven_replication/sync/store/pull/
support.rs1#[derive(Debug)]
2pub enum PullError {
3 Storage(coven_protocol::objects::StorageError),
4 MembershipObject(coven_protocol::objects::StoreObjectError),
5 MembershipLoad(crate::sync::store::membership::AnchoredChainError),
6 Apply(String),
7 SchemaVersionTooOld {
10 local_version: u32,
11 min_version: u32,
12 },
13 MembershipTampered(String),
17}
18
19impl std::fmt::Display for PullError {
20 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
21 match self {
22 PullError::Storage(e) => write!(f, "storage error: {e}"),
23 PullError::MembershipObject(e) => {
24 write!(f, "membership storage failed: {e}")
25 }
26 PullError::MembershipLoad(e) => write!(f, "membership chain failed: {e}"),
27 PullError::Apply(e) => write!(f, "changeset apply failed: {e}"),
28 PullError::SchemaVersionTooOld {
29 local_version,
30 min_version,
31 } => write!(
32 f,
33 "Update the app to keep syncing — this store was upgraded by a newer device (schema v{min_version}; you have v{local_version})."
34 ),
35 PullError::MembershipTampered(e) => write!(f, "membership chain tampered: {e}"),
36 }
37 }
38}
39
40impl std::error::Error for PullError {
41 fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
42 match self {
43 Self::Storage(error) => Some(error),
44 Self::MembershipObject(error) => Some(error),
45 Self::MembershipLoad(error) => Some(error),
46 Self::Apply(_) | Self::SchemaVersionTooOld { .. } | Self::MembershipTampered(_) => None,
47 }
48 }
49}