pub struct WaitRankStatus {
pub id: ResourceId,
pub rank: Rank,
pub min_status: Status,
pub reply: IdleFlushPortRef<StatusOverlay>,
}Expand description
Like GetRankStatus, but the handler defers its reply until the
resource’s status is >= min_status. This avoids the race where
the caller sees Stopping before the process has actually exited.
Fields§
§id: ResourceIdThe resource identifier.
rank: RankThe rank at which the recipient positions its reply overlay, in the
caller’s view (RSP-1, RSP-2). Cast sites leave this Rank::default() and
the cast layer rewrites it in transit with the delivered dense rank;
direct (non-cast) callers set it explicitly with Rank::new(...). A
deferred waiter retains this rank until it is flushed (RSP-3).
min_status: StatusThe minimum status the caller wants to observe. The handler will not reply until the resource’s status is >= this threshold.
reply: IdleFlushPortRef<StatusOverlay>Sparse status updates (overlays) from a rank.
Trait Implementations§
impl Accepts<WaitRankStatus> for HostAgentwhere
WaitRankStatus: RemoteMessage,
impl<T: Controlled + Named> Accepts<WaitRankStatus> for ResourceController<T>where
WaitRankStatus: RemoteMessage,
impl Accepts<WaitRankStatus> for ProcAgentwhere
WaitRankStatus: RemoteMessage,
Source§impl Clone for WaitRankStatus
impl Clone for WaitRankStatus
Source§fn clone(&self) -> WaitRankStatus
fn clone(&self) -> WaitRankStatus
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for WaitRankStatus
impl Debug for WaitRankStatus
Source§impl<'de> Deserialize<'de> for WaitRankStatus
impl<'de> Deserialize<'de> for WaitRankStatus
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Handler<WaitRankStatus> for HostAgent
impl Handler<WaitRankStatus> for HostAgent
Source§fn handle<'life0, 'life1, 'async_trait>(
&'life0 mut self,
cx: &'life1 Context<'_, Self>,
msg: WaitRankStatus,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn handle<'life0, 'life1, 'async_trait>(
&'life0 mut self,
cx: &'life1 Context<'_, Self>,
msg: WaitRankStatus,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn message_status_reporting() -> MessageStatusReporting
fn message_status_reporting() -> MessageStatusReporting
Source§impl<T: Controlled> Handler<WaitRankStatus> for ResourceController<T>
impl<T: Controlled> Handler<WaitRankStatus> for ResourceController<T>
Source§fn handle<'life0, 'life1, 'async_trait>(
&'life0 mut self,
cx: &'life1 Context<'_, Self>,
msg: WaitRankStatus,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn handle<'life0, 'life1, 'async_trait>(
&'life0 mut self,
cx: &'life1 Context<'_, Self>,
msg: WaitRankStatus,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Forward WaitRankStatus to the underlying agents. Each agent replies directly to the caller’s accumulator port when its resource reaches the requested status.
Source§fn message_status_reporting() -> MessageStatusReporting
fn message_status_reporting() -> MessageStatusReporting
Source§impl Handler<WaitRankStatus> for ProcAgent
impl Handler<WaitRankStatus> for ProcAgent
Source§fn handle<'life0, 'life1, 'async_trait>(
&'life0 mut self,
cx: &'life1 Context<'_, Self>,
msg: WaitRankStatus,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn handle<'life0, 'life1, 'async_trait>(
&'life0 mut self,
cx: &'life1 Context<'_, Self>,
msg: WaitRankStatus,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn message_status_reporting() -> MessageStatusReporting
fn message_status_reporting() -> MessageStatusReporting
Source§impl Named for WaitRankStatus
impl Named for WaitRankStatus
Source§fn typename() -> &'static str
fn typename() -> &'static str
Source§fn typehash() -> u64
fn typehash() -> u64
Source§fn typeid() -> TypeId
fn typeid() -> TypeId
impl RemoteHandles<WaitRankStatus> for HostAgentwhere
WaitRankStatus: RemoteMessage,
impl<T: Controlled + Named> RemoteHandles<WaitRankStatus> for ResourceController<T>where
WaitRankStatus: RemoteMessage,
impl RemoteHandles<WaitRankStatus> for ProcAgentwhere
WaitRankStatus: RemoteMessage,
Auto Trait Implementations§
impl !Freeze for WaitRankStatus
impl RefUnwindSafe for WaitRankStatus
impl Send for WaitRankStatus
impl Sync for WaitRankStatus
impl Unpin for WaitRankStatus
impl UnsafeUnpin for WaitRankStatus
impl UnwindSafe for WaitRankStatus
Blanket Implementations§
impl<M> Accepts<M> for Mwhere
M: RemoteMessage,
impl<T> Allocation for T
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].