use serde::{Deserialize, Serialize};
use std::time::{SystemTime, UNIX_EPOCH};
use super::types::CompressionType;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct MessageMetadata {
pub timestamp: u64,
pub timeout_ms: Option<u32>,
pub compression: CompressionType,
pub stream_id: Option<u64>,
pub sequence_number: Option<u64>,
}
impl MessageMetadata {
pub fn new() -> Self {
Self {
timestamp: SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_micros() as u64,
timeout_ms: None,
compression: CompressionType::None,
stream_id: None,
sequence_number: None,
}
}
pub fn with_timeout(mut self, timeout_ms: u32) -> Self {
self.timeout_ms = Some(timeout_ms);
self
}
pub fn with_compression(mut self, compression: CompressionType) -> Self {
self.compression = compression;
self
}
pub fn with_stream(mut self, stream_id: u64, sequence: u64) -> Self {
self.stream_id = Some(stream_id);
self.sequence_number = Some(sequence);
self
}
}