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}