pub struct AccumulatingRuntime<T> { /* private fields */ }
Expand description

A Runtime implementation that’s good enough for simple use-cases.

It accumulates all events that happen during an interaction with crate::Foca and users must drain those and react accordingly.

Better runtimes would react directly to the events, intead of needlessly storing the events in a queue.

Users must drain the runtime immediately after interacting with foca. Example:

See it in use at examples/foca_insecure_udp_agent.rs

Implementations§

source§

impl<T> AccumulatingRuntime<T>

source

pub fn new() -> Self

Create a new AccumulatingRuntime

source

pub fn to_send(&mut self) -> Option<(T, Bytes)>

Yields data to be sent to a cluster member T in the order they’ve happened.

Users are expected to drain it until it yields None after every interaction with crate::Foca

source

pub fn to_schedule(&mut self) -> Option<(Duration, Timer<T>)>

Yields timer events and how far in the future they must be given back to the foca instance that produced it

Users are expected to drain it until it yields None after every interaction with crate::Foca

source

pub fn to_notify(&mut self) -> Option<Notification<T>>

Yields event notifications in the order they’ve happened

Users are expected to drain it until it yields None after every interaction with crate::Foca

source

pub fn backlog(&self) -> usize

Returns how many unhandled events are left in this runtime

Should be brought down to zero after every interaction with crate::Foca

Trait Implementations§

source§

impl<T> Default for AccumulatingRuntime<T>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<T: Identity> Runtime<T> for AccumulatingRuntime<T>

source§

fn notify(&mut self, notification: Notification<T>)

Whenever something changes Foca’s state significantly a notification is emitted. Read more
source§

fn send_to(&mut self, to: T, data: &[u8])

This is how Foca connects to an actual transport. Read more
source§

fn submit_after(&mut self, event: Timer<T>, after: Duration)

Request to schedule the delivery of a given event after a specified duration. Read more

Auto Trait Implementations§

§

impl<T> Freeze for AccumulatingRuntime<T>

§

impl<T> RefUnwindSafe for AccumulatingRuntime<T>
where T: RefUnwindSafe,

§

impl<T> Send for AccumulatingRuntime<T>
where T: Send,

§

impl<T> Sync for AccumulatingRuntime<T>
where T: Sync,

§

impl<T> Unpin for AccumulatingRuntime<T>
where T: Unpin,

§

impl<T> UnwindSafe for AccumulatingRuntime<T>
where T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more