pub struct WaitRankStatus {
pub id: ResourceId,
pub min_status: Status,
pub reply: PortRef<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.
min_status: StatusThe minimum status the caller wants to observe. The handler will not reply until the resource’s status is >= this threshold.
reply: PortRef<StatusOverlay>Sparse status updates (overlays) from a rank.
Trait Implementations§
Source§impl Bind for WaitRankStatus
impl Bind for WaitRankStatus
Source§impl Clone for WaitRankStatus
impl Clone for WaitRankStatus
Source§fn clone(&self) -> WaitRankStatus
fn clone(&self) -> WaitRankStatus
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
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>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Handler<WaitRankStatus> for HostAgent
impl Handler<WaitRankStatus> for HostAgent
Source§impl Handler<WaitRankStatus> for ProcAgent
impl Handler<WaitRankStatus> for ProcAgent
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§impl Named for WaitRankStatus
impl Named for WaitRankStatus
Source§fn typename() -> &'static str
fn typename() -> &'static str
The globally unique type name for the type.
This should typically be the fully qualified Rust name of the type.
Source§fn typehash() -> u64
fn typehash() -> u64
A globally unique hash for this type.
TODO: actually enforce perfect hashing
Source§fn typeid() -> TypeId
fn typeid() -> TypeId
The TypeId for this type. TypeIds are unique only within a binary,
and should not be used for global identification.
Source§fn port() -> u64
fn port() -> u64
The globally unique port for this type. Typed ports are in the range
of 1<<63..1<<64-1.
Source§impl Serialize for WaitRankStatus
impl Serialize for WaitRankStatus
Source§impl Unbind for WaitRankStatus
impl Unbind for WaitRankStatus
impl Accepts<WaitRankStatus> for HostAgentwhere
WaitRankStatus: RemoteMessage,
impl Accepts<WaitRankStatus> for ProcAgentwhere
WaitRankStatus: RemoteMessage,
impl<T: Controlled + Named> Accepts<WaitRankStatus> for ResourceController<T>where
WaitRankStatus: RemoteMessage,
impl RemoteHandles<WaitRankStatus> for HostAgentwhere
WaitRankStatus: RemoteMessage,
impl RemoteHandles<WaitRankStatus> for ProcAgentwhere
WaitRankStatus: RemoteMessage,
impl<T: Controlled + Named> RemoteHandles<WaitRankStatus> for ResourceController<T>where
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<'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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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>
Source§impl<A, M> Handler<IndexedErasedUnbound<M>> for A
impl<A, M> Handler<IndexedErasedUnbound<M>> for A
§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>
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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
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>,
Applies the layer to a service and wraps it in [
Layered].