Skip to main content

safemesh_crdt/
record.rs

1// SafeMesh — delta-state CRDT convergence, built on crdt-lean.
2// Copyright (C) 2026 Ben Cassie
3// SPDX-License-Identifier: Apache-2.0
4
5/// Stable identity for an event-log record.
6#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
7pub struct RecordId {
8    pub replica: u64,
9    pub sequence: u64,
10}
11
12impl RecordId {
13    pub(crate) fn require_positive_sequence(
14        self,
15        kind: &'static str,
16    ) -> Result<(), crate::WireError> {
17        if self.sequence == 0 {
18            Err(crate::WireError::ZeroSequenceRecord {
19                replica: self.replica,
20                kind,
21            })
22        } else {
23            Ok(())
24        }
25    }
26}
27
28/// An event-log record carrying a CRDT delta.
29#[derive(Clone, Debug, PartialEq, Eq)]
30pub struct Record<D> {
31    pub id: RecordId,
32    pub delta: D,
33}