use std::time::Duration;
use crate::DistkitError;
#[derive(Debug, thiserror::Error, PartialEq)]
pub enum LockError {
#[error("failed to acquire lock (would block)")]
AcquireFail,
#[error("timed out after {waited:?}")]
Timeout {
waited: Duration,
},
#[error("not the lock owner")]
NotOwner,
#[error("ttl_ms must be positive, got {0}")]
InvalidTtl(i64),
#[error("owner id must not be empty")]
InvalidOwner,
}
pub(crate) fn validate_ttl(ttl_ms: i64) -> Result<(), DistkitError> {
if ttl_ms <= 0 {
return Err(LockError::InvalidTtl(ttl_ms).into());
}
Ok(())
}
pub(crate) fn validate_owner(owner: &str) -> Result<(), DistkitError> {
if owner.is_empty() {
return Err(LockError::InvalidOwner.into());
}
Ok(())
}