pub trait IDatabase: Debug + MaybeSend + MaybeSync + 'static {
    // Required methods
    fn begin_transaction<'a, 'async_trait>(
        &'a self
    ) -> Pin<Box<dyn Future<Output = Box<dyn IDatabaseTransaction + 'a>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'a: 'async_trait;
    fn register<'life0, 'life1, 'async_trait>(
        &'life0 self,
        key: &'life1 [u8]
    ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn notify<'life0, 'life1, 'async_trait>(
        &'life0 self,
        key: &'life1 [u8]
    ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn prefix_len(&self) -> usize;
}
Expand description

A database that on top of a raw database operation, implements key notification system.

Required Methods§

source

fn begin_transaction<'a, 'async_trait>( &'a self ) -> Pin<Box<dyn Future<Output = Box<dyn IDatabaseTransaction + 'a>> + Send + 'async_trait>>
where Self: 'async_trait, 'a: 'async_trait,

Start a database transaction

source

fn register<'life0, 'life1, 'async_trait>( &'life0 self, key: &'life1 [u8] ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Register (and wait) for key updates

source

fn notify<'life0, 'life1, 'async_trait>( &'life0 self, key: &'life1 [u8] ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Notify about key update (creation, modification, deletion)

source

fn prefix_len(&self) -> usize

The prefix len of this database instance

Implementations on Foreign Types§

source§

impl<T> IDatabase for Arc<T>
where T: IDatabase + ?Sized,

source§

fn begin_transaction<'a, 'async_trait>( &'a self ) -> Pin<Box<dyn Future<Output = Box<dyn IDatabaseTransaction + 'a>> + Send + 'async_trait>>
where Self: 'async_trait, 'a: 'async_trait,

source§

fn register<'life0, 'life1, 'async_trait>( &'life0 self, key: &'life1 [u8] ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

source§

fn notify<'life0, 'life1, 'async_trait>( &'life0 self, key: &'life1 [u8] ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

source§

fn prefix_len(&self) -> usize

Implementors§