dbx_core/grid/
protocol.rs1use crate::replication::protocol::ReplicationMessage;
7use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
11pub enum GridMessage {
12 Replication(ReplicationMessage),
14
15 Lock(LockMessage),
17}
18
19#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
21pub enum LockMessage {
22 Acquire {
24 table: String,
25 key: Vec<u8>,
26 lease_ms: u64,
27 node_id: u32,
28 req_id: u64,
29 },
30 AcquireAck {
32 req_id: u64,
33 granted: bool,
34 fencing_token: u64,
35 },
36 Release {
38 table: String,
39 key: Vec<u8>,
40 fencing_token: u64,
41 node_id: u32,
42 },
43 Heartbeat {
45 node_id: u32,
46 fencing_tokens: Vec<u64>,
47 },
48}
49
50impl GridMessage {
51 pub fn is_replication(&self) -> bool {
53 matches!(self, GridMessage::Replication(_))
54 }
55
56 pub fn is_lock(&self) -> bool {
58 matches!(self, GridMessage::Lock(_))
59 }
60}