synap_sdk/
types.rs

1//! Common types for Synap SDK
2
3use serde::{Deserialize, Serialize};
4
5/// Queue message
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct Message {
8    pub id: String,
9    pub payload: Vec<u8>,
10    pub priority: u8,
11    pub retry_count: u32,
12    pub max_retries: u32,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub deadline: Option<u64>,
15}
16
17/// Queue statistics
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct QueueStats {
20    pub depth: usize,
21    pub pending: usize,
22    pub max_depth: usize,
23    pub total_published: u64,
24    pub total_consumed: u64,
25    pub total_acked: u64,
26    pub total_nacked: u64,
27    pub dlq_count: usize,
28}
29
30/// Stream event
31#[derive(Debug, Clone, Serialize, Deserialize)]
32pub struct Event {
33    pub offset: u64,
34    #[serde(rename = "event_type")]
35    pub event: String,
36    pub data: serde_json::Value,
37    pub timestamp: Option<u64>,
38}
39
40/// Stream statistics
41#[derive(Debug, Clone, Serialize, Deserialize)]
42pub struct StreamStats {
43    pub room: String,
44    pub max_offset: u64,
45    pub total_events: u64,
46    pub created_at: u64,
47    pub last_activity: u64,
48}
49
50/// Pub/Sub message
51#[derive(Debug, Clone, Serialize, Deserialize)]
52pub struct PubSubMessage {
53    pub topic: String,
54    pub data: serde_json::Value,
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub priority: Option<u8>,
57    #[serde(skip_serializing_if = "Option::is_none")]
58    pub headers: Option<std::collections::HashMap<String, String>>,
59}
60
61/// KV Store statistics
62#[derive(Debug, Clone, Serialize, Deserialize)]
63pub struct KVStats {
64    pub total_keys: usize,
65    pub total_memory_bytes: usize,
66    pub hit_rate: f64,
67}