rifts 0.2.0

Rift Realtime Protocol / 1.0 โ€” server-side implementation
Documentation
//! Retention policy (spec ยง9.3).

use std::time::Duration;

/// How long messages on a topic are kept.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum RetentionPolicy {
    /// No retention โ€” messages are not kept after fanout.
    None,
    /// Retain for at most this duration.
    Ttl(Duration),
    /// Retain at most this many messages.
    Count(usize),
    /// Retain at most this many bytes.
    Size(usize),
    /// External durable storage controls retention.
    Durable,
    /// Only the latest value per state key is kept.
    #[default]
    Latest,
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn default_is_latest() {
        assert_eq!(RetentionPolicy::default(), RetentionPolicy::Latest);
    }
}