pub struct Engine<E, B, Rq, Rs, P, M, H>where
E: BufferPooler + 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: BufferPooler + 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: BufferPooler + 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> !RefUnwindSafe 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>
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> 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> UnsafeUnpin for Engine<E, B, Rq, Rs, P, M, H>where
Cell<E>: UnsafeUnpin,
B: UnsafeUnpin,
<Rq as Read>::Cfg: UnsafeUnpin,
<Rs as Read>::Cfg: UnsafeUnpin,
M: UnsafeUnpin,
H: UnsafeUnpin,
Receiver<Message<P, Rq>>: UnsafeUnpin,
HashMap<<Rq as Committable>::Commitment, (HashSet<P>, HashSet<P>)>: UnsafeUnpin,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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> ⓘ
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> ⓘ
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