pub struct HeadCheckpointStop { /* private fields */ }Expand description
Tracks the streams appended through this store for the final shutdown checkpoint.
Implementations§
Source§impl HeadCheckpointStop
impl HeadCheckpointStop
Sourcepub fn new(inner: Arc<dyn DurableStore>) -> Self
pub fn new(inner: Arc<dyn DurableStore>) -> Self
Wraps the shared store before any server stream is constructed.
Sourcepub async fn checkpoint_heads(&self) -> Result<(), DurabilityError>
pub async fn checkpoint_heads(&self) -> Result<(), DurabilityError>
Records every head still owed at a clean stop, before the final store flush.
§Errors
Propagates the store’s checkpoint refusal.
Trait Implementations§
Source§impl Debug for HeadCheckpointStop
impl Debug for HeadCheckpointStop
Source§impl DurableStore for HeadCheckpointStop
impl DurableStore for HeadCheckpointStop
Source§fn reclaim_spine(&self) -> Option<Arc<EventStore>>
fn reclaim_spine(&self) -> Option<Arc<EventStore>>
The haematite store behind this one, when it is the spine opened from
disk: the owner releases its held reclaim, watches its passes and
reads its status through it (DUR-021). A store that is not the spine
answers
None.Source§fn max_request_bytes(&self) -> Option<usize>
fn max_request_bytes(&self) -> Option<usize>
The largest request this store admits, in bytes, or
None when it
names no bound (DUR-024 R2). A caller assembling a batch keeps each
request under it; the bound is read here, from the open store, and is
never assumed or learnt from a refusal.Source§fn store_counts(&self) -> Option<StoreCountsHandle>
fn store_counts(&self) -> Option<StoreCountsHandle>
A reader of the counters of the work done through this store, when the
store counts it. Read more
Source§fn truncate_before<'life0, 'life1, 'async_trait>(
&'life0 self,
stream_key: &'life1 str,
before_seq: u64,
) -> Pin<Box<dyn Future<Output = Result<u64, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn truncate_before<'life0, 'life1, 'async_trait>(
&'life0 self,
stream_key: &'life1 str,
before_seq: u64,
) -> Pin<Box<dyn Future<Output = Result<u64, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Deletes every entry of
stream_key with sequence below before_seq,
in one commit, and returns how many were deleted. Later entries are
untouched, the stream’s head is kept (an append continues where it
would have, and no sequence is reused), and a second identical call
deletes nothing and returns 0. Read moreSource§fn scan_routed<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
route_key: &'life1 str,
from: &'life2 [u8],
to: &'life3 [u8],
) -> Pin<Box<dyn Future<Output = Result<Vec<(Vec<u8>, Vec<u8>)>, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn scan_routed<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
route_key: &'life1 str,
from: &'life2 [u8],
to: &'life3 [u8],
) -> Pin<Box<dyn Future<Output = Result<Vec<(Vec<u8>, Vec<u8>)>, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Reads the routed keys of one window on a route, with their values. Read more
Source§fn remove_routed_range<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
route_key: &'life1 str,
from: &'life2 [u8],
to: &'life3 [u8],
) -> Pin<Box<dyn Future<Output = Result<u64, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn remove_routed_range<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
route_key: &'life1 str,
from: &'life2 [u8],
to: &'life3 [u8],
) -> Pin<Box<dyn Future<Output = Result<u64, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Deletes the routed keys of one window on a route in one commit. Read more
Source§fn apply_routed_batch<'life0, 'life1, 'async_trait>(
&'life0 self,
route_key: &'life1 str,
items: Vec<RoutedBatchItem>,
) -> Pin<Box<dyn Future<Output = Result<(), DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn apply_routed_batch<'life0, 'life1, 'async_trait>(
&'life0 self,
route_key: &'life1 str,
items: Vec<RoutedBatchItem>,
) -> Pin<Box<dyn Future<Output = Result<(), DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Commits all conditional replacements on one route, or publishes none. Read more
Source§fn apply_routed_entries<'life0, 'life1, 'async_trait>(
&'life0 self,
route_key: &'life1 str,
entries: Vec<RoutedBatchEntry>,
) -> Pin<Box<dyn Future<Output = Result<(), DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn apply_routed_entries<'life0, 'life1, 'async_trait>(
&'life0 self,
route_key: &'life1 str,
entries: Vec<RoutedBatchEntry>,
) -> Pin<Box<dyn Future<Output = Result<(), DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Commits conditional replacements and deletes on one route together,
or publishes none (DUR-028 R3). Read more
Source§fn get_routed<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
route_key: &'life1 str,
key: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn get_routed<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
route_key: &'life1 str,
key: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Reads one key from the route used by the atomic writer.
Source§fn append<'life0, 'life1, 'async_trait>(
&'life0 self,
stream_key: &'life1 str,
payload: Vec<u8>,
expected_seq: u64,
) -> Pin<Box<dyn Future<Output = Result<u64, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn append<'life0, 'life1, 'async_trait>(
&'life0 self,
stream_key: &'life1 str,
payload: Vec<u8>,
expected_seq: u64,
) -> Pin<Box<dyn Future<Output = Result<u64, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Appends
payload to stream_key if expected_seq matches the stream head.Source§fn append_all<'life0, 'life1, 'async_trait>(
&'life0 self,
stream_key: &'life1 str,
payloads: Vec<Vec<u8>>,
expected_seq: u64,
) -> Pin<Box<dyn Future<Output = Result<u64, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn append_all<'life0, 'life1, 'async_trait>(
&'life0 self,
stream_key: &'life1 str,
payloads: Vec<Vec<u8>>,
expected_seq: u64,
) -> Pin<Box<dyn Future<Output = Result<u64, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Atomically appends all payloads in order, starting at the expected head,
and returns the stream’s next sequence. Read more
Source§fn read_from<'life0, 'life1, 'async_trait>(
&'life0 self,
stream_key: &'life1 str,
offset: u64,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<StoredEntry>, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn read_from<'life0, 'life1, 'async_trait>(
&'life0 self,
stream_key: &'life1 str,
offset: u64,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<StoredEntry>, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Reads entries from
stream_key beginning at offset, up to limit entries.Source§fn read_at<'life0, 'life1, 'async_trait>(
&'life0 self,
stream_key: &'life1 str,
sequence: u64,
) -> Pin<Box<dyn Future<Output = Result<Option<StoredEntry>, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn read_at<'life0, 'life1, 'async_trait>(
&'life0 self,
stream_key: &'life1 str,
sequence: u64,
) -> Pin<Box<dyn Future<Output = Result<Option<StoredEntry>, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Reads exactly the event at
sequence without traversing its suffix.Source§fn cas<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
old_value: u64,
new_value: u64,
) -> Pin<Box<dyn Future<Output = Result<(), DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn cas<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
old_value: u64,
new_value: u64,
) -> Pin<Box<dyn Future<Output = Result<(), DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Atomically replaces a stored numeric value if it equals
old_value. Read moreSource§fn read_stream_next_seq<'life0, 'life1, 'async_trait>(
&'life0 self,
stream_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<u64>, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn read_stream_next_seq<'life0, 'life1, 'async_trait>(
&'life0 self,
stream_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<u64>, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Reads the exclusive append head without reading stream rows. Read more
Source§fn read_value<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<u64>, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn read_value<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<u64>, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Reads a numeric value previously updated through compare-and-swap.
Source§fn scan_page<'life0, 'life1, 'async_trait>(
&'life0 self,
prefix: &'life1 str,
cursor: Option<ScanCursor>,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<ScanPage, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn scan_page<'life0, 'life1, 'async_trait>(
&'life0 self,
prefix: &'life1 str,
cursor: Option<ScanCursor>,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<ScanPage, DurabilityError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Reads one page of at most
limit entries from the streams whose keys
begin with prefix, in byte order of stream key and then sequence. Read moreAuto Trait Implementations§
impl !Freeze for HeadCheckpointStop
impl !RefUnwindSafe for HeadCheckpointStop
impl !UnwindSafe for HeadCheckpointStop
impl Send for HeadCheckpointStop
impl Sync for HeadCheckpointStop
impl Unpin for HeadCheckpointStop
impl UnsafeUnpin for HeadCheckpointStop
Blanket Implementations§
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