pub struct Engine<E, B, Rq, Rs, P, M, H>where
E: Clock + Spawner,
P: PublicKey,
B: Blocker<PublicKey = P>,
Rq: Committable + Digestible + Codec,
Rs: Committable<Commitment = Rq::Commitment> + Digestible<Digest = Rq::Digest> + Codec,
M: Monitor<Response = Rs, PublicKey = P>,
H: Handler<Request = Rq, Response = Rs, PublicKey = P>,{ /* private fields */ }
Expand description
Engine that will disperse messages and collect responses.
Implementations§
Source§impl<E, B, Rq, Rs, P, M, H> Engine<E, B, Rq, Rs, P, M, H>where
E: Clock + Spawner + Metrics,
P: PublicKey,
B: Blocker<PublicKey = P>,
Rq: Committable + Digestible + Codec,
Rs: Committable<Commitment = Rq::Commitment> + Digestible<Digest = Rq::Digest> + Codec,
M: Monitor<Response = Rs, PublicKey = P>,
H: Handler<Request = Rq, Response = Rs, PublicKey = P>,
impl<E, B, Rq, Rs, P, M, H> Engine<E, B, Rq, Rs, P, M, H>where
E: Clock + Spawner + Metrics,
P: PublicKey,
B: Blocker<PublicKey = P>,
Rq: Committable + Digestible + Codec,
Rs: Committable<Commitment = Rq::Commitment> + Digestible<Digest = Rq::Digest> + Codec,
M: Monitor<Response = Rs, PublicKey = P>,
H: Handler<Request = Rq, Response = Rs, PublicKey = P>,
Sourcepub fn new(
context: E,
cfg: Config<B, M, H, Rq::Cfg, Rs::Cfg>,
) -> (Self, Mailbox<P, Rq>)
pub fn new( context: E, cfg: Config<B, M, H, Rq::Cfg, Rs::Cfg>, ) -> (Self, Mailbox<P, Rq>)
Creates a new engine with the given configuration.
Returns a tuple of the engine and the mailbox for sending messages.
Sourcepub fn start(
self,
requests: (impl Sender<PublicKey = P>, impl Receiver<PublicKey = P>),
responses: (impl Sender<PublicKey = P>, impl Receiver<PublicKey = P>),
) -> Handle<()>
pub fn start( self, requests: (impl Sender<PublicKey = P>, impl Receiver<PublicKey = P>), responses: (impl Sender<PublicKey = P>, impl Receiver<PublicKey = P>), ) -> Handle<()>
Starts the engine with the given network channels.
Returns a handle that can be used to wait for the engine to complete.
Auto Trait Implementations§
impl<E, B, Rq, Rs, P, M, H> Freeze for Engine<E, B, Rq, Rs, P, M, H>
impl<E, B, Rq, Rs, P, M, H> !RefUnwindSafe for Engine<E, B, Rq, Rs, P, M, H>
impl<E, B, Rq, Rs, P, M, H> Send for Engine<E, B, Rq, Rs, P, M, H>
impl<E, B, Rq, Rs, P, M, H> Sync for Engine<E, B, Rq, Rs, P, M, H>
impl<E, B, Rq, Rs, P, M, H> Unpin for Engine<E, B, Rq, Rs, P, M, H>
impl<E, B, Rq, Rs, P, M, H> !UnwindSafe for Engine<E, B, Rq, Rs, P, M, H>
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
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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>
Converts
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>
Converts
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 more