Skip to main content

liminal/durability/
channel.rs

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