pub struct LockGuard { /* private fields */ }Expand description
RAII guard for distributed locks
Automatically releases the lock when dropped. Contains metadata about the lock for verification and monitoring purposes.
Implementations§
Source§impl LockGuard
impl LockGuard
Sourcepub fn new(
resource: String,
token: LockToken,
acquired_at: DateTime<Utc>,
ttl: Duration,
backend: Arc<dyn DistributedLock>,
) -> Self
pub fn new( resource: String, token: LockToken, acquired_at: DateTime<Utc>, ttl: Duration, backend: Arc<dyn DistributedLock>, ) -> Self
Create a new lock guard
Sourcepub fn acquired_at(&self) -> DateTime<Utc>
pub fn acquired_at(&self) -> DateTime<Utc>
Get the acquisition timestamp
Sourcepub fn is_expired(&self) -> bool
pub fn is_expired(&self) -> bool
Check if the lock has expired (based on TTL)
Sourcepub fn time_remaining(&self) -> Duration
pub fn time_remaining(&self) -> Duration
Get time remaining before expiration
Sourcepub async fn release(self) -> StateResult<()>
pub async fn release(self) -> StateResult<()>
Manually release the lock early
This consumes the guard and releases the lock. Normally not needed as the lock is released automatically on drop.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for LockGuard
impl !RefUnwindSafe for LockGuard
impl Send for LockGuard
impl Sync for LockGuard
impl Unpin for LockGuard
impl !UnwindSafe for LockGuard
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.