pub trait StateStore:
StateStoreReadLog
+ StaticSendSync
+ Clone {
type Local: LocalStateStore;
type ReadSnapshot: StateStoreRead + StateStoreReadVector + Clone;
type VectorWriter: StateStoreWriteVector;
// Required methods
fn try_wait_epoch(
&self,
epoch: HummockReadEpoch,
options: TryWaitEpochOptions,
) -> impl StorageFuture<'_, ()>;
fn new_local(
&self,
option: NewLocalOptions,
) -> impl Future<Output = Self::Local> + Send;
fn new_read_snapshot(
&self,
epoch: HummockReadEpoch,
options: NewReadSnapshotOptions,
) -> impl StorageFuture<'_, Self::ReadSnapshot>;
fn new_vector_writer(
&self,
options: NewVectorWriterOptions,
) -> impl Future<Output = Self::VectorWriter> + Send;
// Provided method
fn monitored(
self,
storage_metrics: Arc<MonitoredStorageMetrics>,
) -> MonitoredStateStore<Self> { ... }
}Required Associated Types§
type Local: LocalStateStore
type ReadSnapshot: StateStoreRead + StateStoreReadVector + Clone
type VectorWriter: StateStoreWriteVector
Required Methods§
Sourcefn try_wait_epoch(
&self,
epoch: HummockReadEpoch,
options: TryWaitEpochOptions,
) -> impl StorageFuture<'_, ()>
fn try_wait_epoch( &self, epoch: HummockReadEpoch, options: TryWaitEpochOptions, ) -> impl StorageFuture<'_, ()>
If epoch is Committed, we will wait until the epoch is committed and its data is ready to
read. If epoch is Current, we will only check if the data can be read with this epoch.
fn new_local( &self, option: NewLocalOptions, ) -> impl Future<Output = Self::Local> + Send
fn new_read_snapshot( &self, epoch: HummockReadEpoch, options: NewReadSnapshotOptions, ) -> impl StorageFuture<'_, Self::ReadSnapshot>
fn new_vector_writer( &self, options: NewVectorWriterOptions, ) -> impl Future<Output = Self::VectorWriter> + Send
Provided Methods§
Sourcefn monitored(
self,
storage_metrics: Arc<MonitoredStorageMetrics>,
) -> MonitoredStateStore<Self>
fn monitored( self, storage_metrics: Arc<MonitoredStorageMetrics>, ) -> MonitoredStateStore<Self>
Creates a MonitoredStateStore from this state store, with given stats.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.