Struct tor_persist::state_dir::LockFileGuard

source ·
pub struct LockFileGuard { /* private fields */ }
Available on crate feature state-dir only.
Expand description

Re-export of the lock guard type, as obtained via ContainsInstanceStateGuard A lock-file for which we hold the lock.

So long as this object exists, we hold the lock on this file. When it is dropped, we will release the lock.

§Semantics

  • Only one LockFileGuard can exist at one time for any particular path.
  • This applies across all tasks and threads in all programs; other acquisitions of the lock in the same process are prevented.
  • This applies across even separate machines, if path is on a shared filesystem.

§Restrictions

  • path must only be deleted (or renamed) via the APIs in this module
  • This restriction applies to all programs on the computer, so for example automatic file cleaning with find and rm is forbidden.
  • Cross-filesystem locking is broken on Linux before 2.6.12.

Implementations§

source§

impl LockFileGuard

source

pub fn lock<P>(path: P) -> Result<LockFileGuard, Error>
where P: AsRef<Path>,

Try to construct a new LockFileGuard representing a lock we hold on the file path.

Blocks until we can get the lock.

source

pub fn try_lock<P>(path: P) -> Result<Option<LockFileGuard>, Error>
where P: AsRef<Path>,

Try to construct a new LockFileGuard representing a lock we hold on the file path.

Does not block; returns Ok(None) if somebody else holds the lock.

source

pub fn delete_lock_file<P>(self, path: P) -> Result<(), Error>
where P: AsRef<Path>,

Try to delete the lock file that we hold.

The provided path must be the same as was passed to lock.

Trait Implementations§

source§

impl Debug for LockFileGuard

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more