use crate::replication::protocol::ReplicationMessage;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub enum GridMessage {
Replication(ReplicationMessage),
Lock(LockMessage),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub enum LockMessage {
Acquire {
table: String,
key: Vec<u8>,
lease_ms: u64,
node_id: u32,
req_id: u64,
},
AcquireAck {
req_id: u64,
granted: bool,
fencing_token: u64,
},
Release {
table: String,
key: Vec<u8>,
fencing_token: u64,
node_id: u32,
},
Heartbeat {
node_id: u32,
fencing_tokens: Vec<u64>,
},
}
impl GridMessage {
pub fn is_replication(&self) -> bool {
matches!(self, GridMessage::Replication(_))
}
pub fn is_lock(&self) -> bool {
matches!(self, GridMessage::Lock(_))
}
}