use serde::{Deserialize, Serialize};
use crate::sync::compensation::CompensationHint;
use crate::sync::wire::ack_status::AckStatus;
#[derive(
Debug, Clone, Serialize, Deserialize, zerompk::ToMessagePack, zerompk::FromMessagePack,
)]
pub struct DeltaPushMsg {
pub collection: String,
pub document_id: String,
pub delta: Vec<u8>,
pub peer_id: u64,
pub mutation_id: u64,
#[serde(default)]
pub checksum: u32,
#[serde(default)]
pub device_valid_time_ms: Option<i64>,
#[serde(default)]
pub producer_id: u64,
#[serde(default)]
pub epoch: u64,
#[serde(default)]
pub seq: u64,
}
#[derive(
Debug, Clone, Serialize, Deserialize, zerompk::ToMessagePack, zerompk::FromMessagePack,
)]
pub struct DeltaAckMsg {
pub mutation_id: u64,
pub lsn: u64,
#[serde(default)]
pub clock_skew_warning_ms: Option<i64>,
#[serde(default)]
pub applied_seq: u64,
#[serde(default)]
pub status: AckStatus,
}
#[derive(
Debug, Clone, Serialize, Deserialize, zerompk::ToMessagePack, zerompk::FromMessagePack,
)]
pub struct DeltaRejectMsg {
pub mutation_id: u64,
pub reason: String,
pub compensation: Option<CompensationHint>,
}
#[derive(
Debug, Clone, Serialize, Deserialize, zerompk::ToMessagePack, zerompk::FromMessagePack,
)]
pub struct CollectionPurgedMsg {
pub tenant_id: u64,
pub name: String,
pub purge_lsn: u64,
}