pub struct FifoPool<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult>{ /* private fields */ }Expand description
A direct-worker FIFO pool with one bounded global backlog.
Trait Implementations§
Source§impl<Role, W, P, Source, Diagnostics, Job, WorkerResult> Behavior for FifoPool<Role, W, P, Source, Diagnostics, Job, WorkerResult>where
Role: Eq + Send + Sync,
W: Behavior + BehaviorBase + Send,
W::Protocol: Protocol<Msg = Assignment<Job>>,
W::Sends: CompletesAssignments<WorkerResult = WorkerResult>,
P: ActivationPlan,
Source: WorkerSource<Role, W, P>,
Diagnostics: DiagnosticRoute<FifoDiagnostic<Role, W, P, Source, Job, WorkerResult>> + Clone,
BehaviorAddr<W>: EndpointAddress,
<BehaviorAddr<W> as Address>::Nonce: Send,
<BehaviorAddr<W> as EndpointAddress>::Established<W::Protocol>: Send,
StopOnShutdown<W>: Behavior<Protocol = W::Protocol, Error = W::Error, Ph = W::Ph, Birth = W::Birth>,
<StopOnShutdown<W> as Behavior>::Event: InjectEvent<ShutdownRequested, Here>,
Job: Clone + Send,
WorkerResult: Send,
impl<Role, W, P, Source, Diagnostics, Job, WorkerResult> Behavior for FifoPool<Role, W, P, Source, Diagnostics, Job, WorkerResult>where
Role: Eq + Send + Sync,
W: Behavior + BehaviorBase + Send,
W::Protocol: Protocol<Msg = Assignment<Job>>,
W::Sends: CompletesAssignments<WorkerResult = WorkerResult>,
P: ActivationPlan,
Source: WorkerSource<Role, W, P>,
Diagnostics: DiagnosticRoute<FifoDiagnostic<Role, W, P, Source, Job, WorkerResult>> + Clone,
BehaviorAddr<W>: EndpointAddress,
<BehaviorAddr<W> as Address>::Nonce: Send,
<BehaviorAddr<W> as EndpointAddress>::Established<W::Protocol>: Send,
StopOnShutdown<W>: Behavior<Protocol = W::Protocol, Error = W::Error, Ph = W::Ph, Birth = W::Birth>,
<StopOnShutdown<W> as Behavior>::Event: InjectEvent<ShutdownRequested, Here>,
Job: Clone + Send,
WorkerResult: Send,
Source§type Protocol = MessageProtocol<<<W as Behavior>::Protocol as Protocol>::Addr, FifoCommand<<<W as Behavior>::Protocol as Protocol>::Addr, Role, Job, WorkerResult>>
type Protocol = MessageProtocol<<<W as Behavior>::Protocol as Protocol>::Addr, FifoCommand<<<W as Behavior>::Protocol as Protocol>::Addr, Role, Job, WorkerResult>>
Stable public communication identity owned by this actor template. Read more
type Event = FifoEvent<Role, W, P, Job, WorkerResult, SettledItem<PrepareWorkers<Source, Role, W, P>, ItemSettlement<PrepareWorkers<Source, Role, W, P>, <PrepareWorkers<Source, Role, W, P> as ActionItem>::Accepted, <PrepareWorkers<Source, Role, W, P> as ActionItem>::Rejection, <PrepareWorkers<Source, Role, W, P> as ActionItem>::Prerequisite>>, WorkerPreparation<Source, Role, W, P>>
type Sends = FifoRequests<InterpreterRequests<ObserveChild<<W as Behavior>::Protocol, ChildHead>>, InterpreterRequests<InitializeWorker<W, P>>, InterpreterRequests<BeginActivation<W, P>>, <ReplyRoute<MessageProtocol<<<W as Behavior>::Protocol as Protocol>::Addr, FifoOutcome<Role, Job, WorkerResult>>> as DeliveryRoute>::Sends, SourceActions<AssignWorker<<W as Behavior>::Protocol, Job>>, SourceActions<PrepareWorkers<Source, Role, W, P>>, SourceActions<ScheduleAfter>, InterpreterRequests<ShutdownEstablished<StopOnShutdown<W>, Here>>, InterpreterRequests<DiagnosticAction<Diagnostics, FifoDiagnostic<Role, W, P, Source, Job, WorkerResult>>>>
type Ph = Never
type Error = FifoError
type Birth = Births<StopOnShutdown<W>>
Source§fn init(&mut self, _: InitializationTurn) -> BehaviorActed<Self>
fn init(&mut self, _: InitializationTurn) -> BehaviorActed<Self>
Produce initialization actions before the first event is accepted. Read more
Source§fn transition(
&mut self,
_: ActiveTurn,
input: Self::Event,
) -> BehaviorActed<Self>
fn transition( &mut self, _: ActiveTurn, input: Self::Event, ) -> BehaviorActed<Self>
Fold exactly one event into explicit actions and the next behavior. Read more
Source§fn layer<L>(self, layer: L) -> <L as BehaviorLayer<Self>>::Outputwhere
Self: Sized,
L: BehaviorLayer<Self>,
fn layer<L>(self, layer: L) -> <L as BehaviorLayer<Self>>::Outputwhere
Self: Sized,
L: BehaviorLayer<Self>,
Apply one statically dispatched construction layer. Read more
Source§impl<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult> BehaviorBase for FifoPool<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult>where
Role: Send + Sync,
W: Behavior + Send,
W::Protocol: Protocol<Msg = Assignment<Job>>,
W::Sends: CompletesAssignments<WorkerResult = WorkerResult>,
P: ActivationPlan,
Source: WorkerSource<Role, W, P>,
BehaviorAddr<W>: EndpointAddress,
Job: Send,
impl<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult> BehaviorBase for FifoPool<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult>where
Role: Send + Sync,
W: Behavior + Send,
W::Protocol: Protocol<Msg = Assignment<Job>>,
W::Sends: CompletesAssignments<WorkerResult = WorkerResult>,
P: ActivationPlan,
Source: WorkerSource<Role, W, P>,
BehaviorAddr<W>: EndpointAddress,
Job: Send,
Auto Trait Implementations§
impl<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult> Freeze for FifoPool<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult>
impl<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult> RefUnwindSafe for FifoPool<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult>where
<<W as Behavior>::Protocol as Protocol>::Addr: Sized + RefUnwindSafe,
DiagnosticRoute: RefUnwindSafe,
Source: RefUnwindSafe,
Role: RefUnwindSafe,
W: RefUnwindSafe,
P: RefUnwindSafe,
<<<W as Behavior>::Protocol as Protocol>::Addr as EndpointAddress>::Installed<StopOnShutdown<W>>: RefUnwindSafe,
Job: RefUnwindSafe,
<<<W as Behavior>::Protocol as Protocol>::Addr as EndpointAddress>::Established<<W as Behavior>::Protocol>: RefUnwindSafe,
WorkerResult: RefUnwindSafe,
<<<W as Behavior>::Protocol as Protocol>::Addr as EndpointAddress>::Established<MessageProtocol<<<W as Behavior>::Protocol as Protocol>::Addr, FifoOutcome<Role, Job, WorkerResult>>>: RefUnwindSafe,
impl<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult> Send for FifoPool<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult>where
<<W as Behavior>::Protocol as Protocol>::Addr: Sized + Send,
DiagnosticRoute: Send,
Source: Send,
Role: Send + Sync,
W: Send,
P: Send,
Job: Send,
<<<W as Behavior>::Protocol as Protocol>::Addr as EndpointAddress>::Installed<StopOnShutdown<W>>: Send,
<<<W as Behavior>::Protocol as Protocol>::Addr as EndpointAddress>::Established<MessageProtocol<<<W as Behavior>::Protocol as Protocol>::Addr, FifoOutcome<Role, Job, WorkerResult>>>: Send,
<<<W as Behavior>::Protocol as Protocol>::Addr as EndpointAddress>::Established<<W as Behavior>::Protocol>: Send,
WorkerResult: Send,
impl<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult> Sync for FifoPool<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult>where
<<W as Behavior>::Protocol as Protocol>::Addr: Sized + Sync,
DiagnosticRoute: Sync,
Source: Sync,
Role: Sync + Send,
W: Sync,
P: Sync,
Job: Sync,
<<<W as Behavior>::Protocol as Protocol>::Addr as EndpointAddress>::Installed<StopOnShutdown<W>>: Sync,
<<<W as Behavior>::Protocol as Protocol>::Addr as EndpointAddress>::Established<MessageProtocol<<<W as Behavior>::Protocol as Protocol>::Addr, FifoOutcome<Role, Job, WorkerResult>>>: Sync,
<<<W as Behavior>::Protocol as Protocol>::Addr as EndpointAddress>::Established<<W as Behavior>::Protocol>: Sync,
WorkerResult: Sync,
impl<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult> Unpin for FifoPool<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult>where
<<W as Behavior>::Protocol as Protocol>::Addr: Sized + Unpin,
DiagnosticRoute: Unpin,
Source: Unpin,
Role: Unpin,
W: Unpin,
P: Unpin,
<<<W as Behavior>::Protocol as Protocol>::Addr as EndpointAddress>::Installed<StopOnShutdown<W>>: Unpin,
<<<W as Behavior>::Protocol as Protocol>::Addr as EndpointAddress>::Established<<W as Behavior>::Protocol>: Unpin,
Job: Unpin,
WorkerResult: Unpin,
<<<W as Behavior>::Protocol as Protocol>::Addr as EndpointAddress>::Established<MessageProtocol<<<W as Behavior>::Protocol as Protocol>::Addr, FifoOutcome<Role, Job, WorkerResult>>>: Unpin,
impl<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult> UnsafeUnpin for FifoPool<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult>where
<<W as Behavior>::Protocol as Protocol>::Addr: Sized,
DiagnosticRoute: UnsafeUnpin,
Source: UnsafeUnpin,
impl<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult> UnwindSafe for FifoPool<Role, W, P, Source, DiagnosticRoute, Job, WorkerResult>where
<<W as Behavior>::Protocol as Protocol>::Addr: Sized + RefUnwindSafe + UnwindSafe,
DiagnosticRoute: UnwindSafe,
Source: UnwindSafe,
Role: UnwindSafe + RefUnwindSafe,
Job: RefUnwindSafe + UnwindSafe,
W: UnwindSafe,
P: UnwindSafe,
<<<W as Behavior>::Protocol as Protocol>::Addr as EndpointAddress>::Established<MessageProtocol<<<W as Behavior>::Protocol as Protocol>::Addr, FifoOutcome<Role, Job, WorkerResult>>>: RefUnwindSafe + UnwindSafe,
<<<W as Behavior>::Protocol as Protocol>::Addr as EndpointAddress>::Installed<StopOnShutdown<W>>: UnwindSafe,
<<<W as Behavior>::Protocol as Protocol>::Addr as EndpointAddress>::Established<<W as Behavior>::Protocol>: UnwindSafe,
WorkerResult: UnwindSafe,
Blanket Implementations§
Source§impl<B> Activate for Bwhere
B: Behavior,
impl<B> Activate for Bwhere
B: Behavior,
Source§fn initialize(self) -> Result<Initialized<Self>, Self::Error>
fn initialize(self) -> Result<Initialized<Self>, Self::Error>
Consume this definition, perform its one initialization fold, and
return the active behavior together with the ordered initialization
effects. Read more
Source§impl<B> BeginShutdownPhases for B
impl<B> BeginShutdownPhases for B
type Output = ChildShutdownPhases<B, <<<B as Behavior>::Birth as BirthMode>::Child as ChildOccurrenceProduct<AvailableChildren>>::Product, NoPhases>
fn begin_shutdown_phases(self) -> <B as BeginShutdownPhases>::Output
Source§impl<Node> BirthNodeAppend<Never> for Nodewhere
Node: NonEmptyBirthNode,
impl<Node> BirthNodeAppend<Never> for Nodewhere
Node: NonEmptyBirthNode,
Source§type Output = Node
type Output = Node
Closed child algebra containing the complete prefix followed by the
complete appended tail.
Source§fn append_prefix(self) -> <Node as BirthNodeAppend<Never>>::Output
fn append_prefix(self) -> <Node as BirthNodeAppend<Never>>::Output
Inject one child from the existing prefix without changing its
structural occurrence.
Source§fn append_tail(tail: Never) -> <Node as BirthNodeAppend<Never>>::Output
fn append_tail(tail: Never) -> <Node as BirthNodeAppend<Never>>::Output
Inject one child from the appended tail after every prefix occurrence.
Source§fn append_creations<A>(
prefix: Creations<CreateChild<A, Self>>,
tail: Creations<CreateChild<A, Tail>>,
) -> Creations<CreateChild<A, Self::Output>>where
A: Address,
fn append_creations<A>(
prefix: Creations<CreateChild<A, Self>>,
tail: Creations<CreateChild<A, Tail>>,
) -> Creations<CreateChild<A, Self::Output>>where
A: Address,
Preserve and concatenate two ordered creation batches.
Source§impl<Child, Tail> BirthNodeAppend<Tail> for Childwhere
Child: Behavior,
Tail: NonEmptyBirthNode,
impl<Child, Tail> BirthNodeAppend<Tail> for Childwhere
Child: Behavior,
Tail: NonEmptyBirthNode,
Source§type Output = ChildChoice<Child, Tail>
type Output = ChildChoice<Child, Tail>
Closed child algebra containing the complete prefix followed by the
complete appended tail.
Source§fn append_prefix(self) -> <Child as BirthNodeAppend<Tail>>::Output
fn append_prefix(self) -> <Child as BirthNodeAppend<Tail>>::Output
Inject one child from the existing prefix without changing its
structural occurrence.
Source§fn append_tail(tail: Tail) -> <Child as BirthNodeAppend<Tail>>::Output
fn append_tail(tail: Tail) -> <Child as BirthNodeAppend<Tail>>::Output
Inject one child from the appended tail after every prefix occurrence.
Source§fn append_creations<A>(
prefix: Creations<CreateChild<A, Self>>,
tail: Creations<CreateChild<A, Tail>>,
) -> Creations<CreateChild<A, Self::Output>>where
A: Address,
fn append_creations<A>(
prefix: Creations<CreateChild<A, Self>>,
tail: Creations<CreateChild<A, Tail>>,
) -> Creations<CreateChild<A, Self::Output>>where
A: Address,
Preserve and concatenate two ordered creation batches.
Source§impl<B> BirthProtocols for B
impl<B> BirthProtocols for B
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<Node, Shape> ChildOccurrenceProduct<Shape> for Nodewhere
Node: ChildOccurrenceProductAt<ChildHead, Shape>,
Shape: ChildOccurrenceShape,
impl<Node, Shape> ChildOccurrenceProduct<Shape> for Nodewhere
Node: ChildOccurrenceProductAt<ChildHead, Shape>,
Shape: ChildOccurrenceShape,
Source§impl<A, Child, Host> DispatchBirth<A, Host> for Child
impl<A, Child, Host> DispatchBirth<A, Host> for Child
Source§fn dispatch_birth(
self,
id: CreationId,
route: <A as Address>::Nonce,
kind: CreationKind,
host: &mut Host,
) -> impl Future<Output = ItemSettlement<RoutedCreation<A, Child>, <Child as ChildCreationProduct<A, ChildHead>>::Result, CreationRejection, Never>> + Send
fn dispatch_birth( self, id: CreationId, route: <A as Address>::Nonce, kind: CreationKind, host: &mut Host, ) -> impl Future<Output = ItemSettlement<RoutedCreation<A, Child>, <Child as ChildCreationProduct<A, ChildHead>>::Result, CreationRejection, Never>> + Send
Select exactly one concrete child host while preserving creation data
in every non-accepted settlement.