1use rkyv::{Archive, Deserialize, Serialize};
4
5#[derive(Archive, Serialize, Deserialize, Debug, Clone)]
7#[rkyv(derive(Debug))]
8pub struct AuthRequest {
9 pub hmac_base: Vec<u8>,
11
12 pub hmac_signature: [u8; 32],
14
15 pub client_pk: [u8; 32],
17
18 pub nonce: [u8; 32],
20
21 pub timestamp: u64,
23}
24
25#[derive(Archive, Serialize, Deserialize, Debug, Clone)]
27#[rkyv(derive(Debug))]
28pub struct AuthResponse {
29 pub token: Vec<u8>,
31
32 pub valid_until: u64,
34
35 pub warning: Option<EmergencyWarning>,
37}
38
39#[derive(Archive, Serialize, Deserialize, Debug, Clone)]
41#[rkyv(derive(Debug))]
42pub struct EmergencyWarning {
43 pub level: String,
45
46 pub action: String,
48
49 pub trigger_after: u64,
51}
52
53#[derive(Archive, Serialize, Deserialize, Debug, Clone)]
55#[rkyv(derive(Debug))]
56pub struct TokenPayload {
57 pub user_id: u64,
59
60 pub nonce: [u8; 32],
62
63 pub issued_at: u64,
65
66 pub valid_until: u64,
68}
69
70#[derive(Archive, Serialize, Deserialize, Debug, Clone)]
72#[rkyv(derive(Debug))]
73pub struct ConnRecord {
74 pub conn_id: u64,
76
77 pub metadata: ConnMeta,
79
80 pub created_at: u64,
82
83 pub last_active: u64,
85
86 pub access_count: u32,
88
89 pub txid: u64,
91}
92
93#[derive(Archive, Serialize, Deserialize, Debug, Clone)]
95#[rkyv(derive(Debug))]
96pub struct ConnMeta {
97 pub client_addr: [u8; 16],
99
100 pub nat_entry: (u16, u16),
102
103 pub assigned_pod: u32,
105
106 pub stream_states: Vec<StreamState>,
108}
109
110#[derive(Archive, Serialize, Deserialize, Debug, Clone)]
112#[rkyv(derive(Debug))]
113pub struct StreamState {
114 pub stream_id: u32,
116
117 pub bytes_sent: u64,
119
120 pub bytes_received: u64,
122
123 pub is_closed: bool,
125}