pub struct InMemoryLockManager { /* private fields */ }Expand description
In-memory LockManager backed by a HashMap<String, Arc<InMemoryLock>>.
Lazily creates one InMemoryLock per unique key and returns the same
Arc for repeated lookups. An entry is evicted on unlock once it is idle
and no handle beyond the map’s own remains, so the map does not grow
unboundedly with every aggregate id ever locked.
Implementations§
Trait Implementations§
Source§impl Default for InMemoryLockManager
impl Default for InMemoryLockManager
Source§impl LockManager for InMemoryLockManager
impl LockManager for InMemoryLockManager
Source§fn get_lock(&self, id: &str) -> Result<Arc<InMemoryLock>, LockError>
fn get_lock(&self, id: &str) -> Result<Arc<InMemoryLock>, LockError>
Get (or create) the lock for id.
The returned handle is good for one acquire/release cycle: unlocking may
evict the idle entry, so do not cache the handle across an unlock —
call get_lock again (as QueuedRepository does per operation).
Source§type Lock = InMemoryLock
type Lock = InMemoryLock
The concrete lock type returned by this manager.
Auto Trait Implementations§
impl Freeze for InMemoryLockManager
impl RefUnwindSafe for InMemoryLockManager
impl Send for InMemoryLockManager
impl Sync for InMemoryLockManager
impl Unpin for InMemoryLockManager
impl UnsafeUnpin for InMemoryLockManager
impl UnwindSafe for InMemoryLockManager
Blanket Implementations§
Source§impl<T> AggregateBuilder for T
impl<T> AggregateBuilder for T
fn aggregate<A: Aggregate>(self) -> AggregateRepository<Self, A>
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> Queueable for T
impl<T> Queueable for T
Source§fn queued(self) -> QueuedRepository<Self, InMemoryLockManager>
fn queued(self) -> QueuedRepository<Self, InMemoryLockManager>
Wrap with the default async lock manager. Pair with
.aggregate::<T>() for per-aggregate serialization over the async
repository surface.Source§fn queued_with<L: LockManager>(
self,
lock_manager: L,
) -> QueuedRepository<Self, L>
fn queued_with<L: LockManager>( self, lock_manager: L, ) -> QueuedRepository<Self, L>
Wrap with a custom async lock manager.