Struct concurrency_manager::ConcurrencyManager[][src]

pub struct ConcurrencyManager {
    max_ts: Arc<AtomicU64>,
    lock_table: LockTable,
}

Fields

max_ts: Arc<AtomicU64>lock_table: LockTable

Implementations

impl ConcurrencyManager[src]

pub fn new(latest_ts: TimeStamp) -> Self[src]

pub fn max_ts(&self) -> TimeStamp[src]

pub fn update_max_ts(&self, new_ts: TimeStamp)[src]

Updates max_ts with the given new_ts. It has no effect if max_ts >= new_ts or new_ts is TimeStamp::max().

pub async fn lock_key(&self, key: &Key) -> KeyHandleGuard[src]

Acquires a mutex of the key and returns an RAII guard. When the guard goes out of scope, the mutex will be unlocked.

The guard can be used to store Lock in the table. The stored lock is visible to read_key_check and read_range_check.

pub async fn lock_keys(
    &self,
    keys: impl Iterator<Item = &Key>
) -> Vec<KeyHandleGuard>
[src]

Acquires mutexes of the keys and returns the RAII guards. The order of the guards is the same with the given keys.

The guards can be used to store Lock in the table. The stored lock is visible to read_key_check and read_range_check.

pub fn read_key_check<E>(
    &self,
    key: &Key,
    check_fn: impl FnOnce(&Lock) -> Result<(), E>
) -> Result<(), E>
[src]

Checks if there is a memory lock of the key which blocks the read. The given check_fn should return false iff the lock passed in blocks the read.

pub fn read_range_check<E>(
    &self,
    start_key: Option<&Key>,
    end_key: Option<&Key>,
    check_fn: impl FnMut(&Key, &Lock) -> Result<(), E>
) -> Result<(), E>
[src]

Checks if there is a memory lock in the range which blocks the read. The given check_fn should return false iff the lock passed in blocks the read.

pub fn global_min_lock_ts(&self) -> Option<TimeStamp>[src]

Find the minimum start_ts among all locks in memory.

Trait Implementations

impl Clone for ConcurrencyManager[src]

Auto Trait Implementations

impl !RefUnwindSafe for ConcurrencyManager

impl Send for ConcurrencyManager

impl Sync for ConcurrencyManager

impl Unpin for ConcurrencyManager

impl !UnwindSafe for ConcurrencyManager

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Pointable for T[src]

type Init = T

The type for initializers.

impl<T> Pointable for T[src]

type Init = T

The type for initializers.

impl<T> Same<T> for T[src]

type Output = T

Should always be Self

impl<T> Sealed<T> for T where
    T: ?Sized
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 
[src]