use serde::{Deserialize, Serialize};
#[derive(
Debug, Clone, Serialize, Deserialize, zerompk::ToMessagePack, zerompk::FromMessagePack,
)]
pub struct ResyncRequestMsg {
pub reason: ResyncReason,
pub from_mutation_id: u64,
pub collection: String,
}
#[derive(
Debug, Clone, Serialize, Deserialize, zerompk::ToMessagePack, zerompk::FromMessagePack,
)]
#[serde(rename_all = "snake_case")]
#[non_exhaustive]
pub enum ResyncReason {
#[serde(rename = "sequence_gap")]
SequenceGap {
expected: u64,
received: u64,
},
#[serde(rename = "checksum_mismatch")]
ChecksumMismatch {
mutation_id: u64,
},
#[serde(rename = "corrupted_state")]
CorruptedState,
}
#[derive(
Debug, Clone, Serialize, Deserialize, zerompk::ToMessagePack, zerompk::FromMessagePack,
)]
pub struct ThrottleMsg {
pub throttle: bool,
pub queue_depth: u64,
pub suggested_rate: u64,
}