Skip to main content

liminal/durability/
channel.rs

1mod batch;
2mod codec;
3mod pending;
4mod presence;
5mod storage;
6pub use pending::{AppendResolution, UnresolvedAppend};
7pub use presence::KeyLookup;
8
9pub use storage::{DurableChannel, EphemeralChannel, PartitionKey};
10
11/// Storage causal metadata persisted with a durable message envelope.
12#[derive(Clone, Debug, PartialEq, Eq)]
13pub struct CausalContext {
14    /// Optional parent message identifier.
15    pub parent_id: Option<String>,
16    /// Optional vector clock entry for causal ordering.
17    pub vector_clock_entry: Option<u64>,
18}
19
20/// Deterministic storage envelope for durable channel messages.
21#[derive(Clone, Debug, PartialEq, Eq)]
22pub struct MessageEnvelope {
23    /// Opaque message payload bytes.
24    pub payload: Vec<u8>,
25    /// Optional causal metadata.
26    pub causal_context: Option<CausalContext>,
27    /// Publisher-provided epoch-millisecond timestamp.
28    pub timestamp: u64,
29    /// Stable publisher identity.
30    pub publisher_id: String,
31    /// Optional producer idempotency key.
32    pub idempotency_key: Option<String>,
33}