pub struct PeriodicMeasure { /* private fields */ }Expand description
Pure-ledger runtime adapter with coalesced asynchronous snapshot persistence.
Network callbacks update only in-memory state and replace the pending full
snapshot. A runtime task serializes storage writes. The algorithm, time
projection, pruning, and snapshot schema remain in rings-measure.
Implementations§
Source§impl PeriodicMeasure
impl PeriodicMeasure
Sourcepub async fn new(storage: MeasureStorage) -> Result<Self, MeasureRuntimeError>
pub async fn new(storage: MeasureStorage) -> Result<Self, MeasureRuntimeError>
Load the complete ledger once and start the coalescing persistence task.
On native targets this captures the active Tokio runtime handle. The
constructor returns MeasureRuntimeError::RuntimeUnavailable instead
of panicking when called outside a live runtime.
Sourcepub async fn flush(&self) -> Result<(), MeasureRuntimeError>
pub async fn flush(&self) -> Result<(), MeasureRuntimeError>
Persist a snapshot containing every update visible when this method starts.
On native targets, the Tokio runtime captured by Self::new must
remain alive until the returned future completes.
Sourcepub async fn flush_with_timeout(
&self,
timeout: Duration,
) -> Result<(), MeasureRuntimeError>
pub async fn flush_with_timeout( &self, timeout: Duration, ) -> Result<(), MeasureRuntimeError>
Persist all applied updates unless the supplied deadline expires first.
On native targets, the Tokio runtime captured by Self::new must
remain alive until the returned future completes or reaches timeout.
Trait Implementations§
Source§impl BehaviourJudgement for PeriodicMeasure
impl BehaviourJudgement for PeriodicMeasure
Source§impl Measure for PeriodicMeasure
impl Measure for PeriodicMeasure
Source§fn incr<'life0, 'async_trait>(
&'life0 self,
did: Did,
counter: MeasureCounter,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn incr<'life0, 'async_trait>(
&'life0 self,
did: Did,
counter: MeasureCounter,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn get_count<'life0, 'async_trait>(
&'life0 self,
did: Did,
counter: MeasureCounter,
) -> Pin<Box<dyn Future<Output = u64> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_count<'life0, 'async_trait>(
&'life0 self,
did: Did,
counter: MeasureCounter,
) -> Pin<Box<dyn Future<Output = u64> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
get_count returns the counter of the given peer.Source§fn record<'life0, 'async_trait>(
&'life0 self,
did: Did,
authentication: Authentication,
event: MeasurementEvent,
) -> Pin<Box<dyn Future<Output = Result<ApplyOutcome, MeasureError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn record<'life0, 'async_trait>(
&'life0 self,
did: Did,
authentication: Authentication,
event: MeasurementEvent,
) -> Pin<Box<dyn Future<Output = Result<ApplyOutcome, MeasureError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn record_batch<'life0, 'async_trait>(
&'life0 self,
did: Did,
authentication: Authentication,
batch: MeasurementBatch,
) -> Pin<Box<dyn Future<Output = Result<ApplyOutcome, MeasureError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn record_batch<'life0, 'async_trait>(
&'life0 self,
did: Did,
authentication: Authentication,
batch: MeasurementBatch,
) -> Pin<Box<dyn Future<Output = Result<ApplyOutcome, MeasureError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn peer_measurement<'life0, 'async_trait>(
&'life0 self,
did: Did,
) -> Pin<Box<dyn Future<Output = Result<Option<PeerMeasurement>, MeasureError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn peer_measurement<'life0, 'async_trait>(
&'life0 self,
did: Did,
) -> Pin<Box<dyn Future<Output = Result<Option<PeerMeasurement>, MeasureError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn peer_measurements<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<PeerMeasurement>, MeasureError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn peer_measurements<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<PeerMeasurement>, MeasureError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn peer_measurements_page<'life0, 'async_trait>(
&'life0 self,
after: Option<Did>,
limit: NonZeroUsize,
) -> Pin<Box<dyn Future<Output = Result<PeerMeasurementPage, MeasureError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn peer_measurements_page<'life0, 'async_trait>(
&'life0 self,
after: Option<Did>,
limit: NonZeroUsize,
) -> Pin<Box<dyn Future<Output = Result<PeerMeasurementPage, MeasureError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Auto Trait Implementations§
impl !RefUnwindSafe for PeriodicMeasure
impl !UnwindSafe for PeriodicMeasure
impl Freeze for PeriodicMeasure
impl Send for PeriodicMeasure
impl Sync for PeriodicMeasure
impl Unpin for PeriodicMeasure
impl UnsafeUnpin for PeriodicMeasure
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: '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
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
impl<T> MaybeSend for T
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.