use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum Cmd {
Set { key: Vec<u8>, value: Vec<u8> },
Delete { key: Vec<u8> },
Cas {
key: Vec<u8>,
expect: Option<Vec<u8>>,
value: Vec<u8>,
},
AcquireLock {
key: String,
holder: String,
now_ms: u64,
ttl_ms: u64,
},
RenewLock {
key: String,
holder: String,
now_ms: u64,
ttl_ms: u64,
},
ReleaseLock { key: String, holder: String },
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum CmdResult {
Ok,
Bool(bool),
Fencing(Option<u64>),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct Lock {
pub holder: String,
pub expire_at_ms: u64,
pub fencing_token: u64,
}