pub struct HealthMonitor<T: HealthReportSender> { /* private fields */ }Expand description
A runtime health monitoring service.
The HealthMonitor tracks client health statuses by processing events such
as connections, disconnections, and connection losses. It periodically
checks client states and sends health reports using the configured
HealthReportSender.
Implementations§
Source§impl<T: HealthReportSender> HealthMonitor<T>
impl<T: HealthReportSender> HealthMonitor<T>
Sourcepub async fn listen(&mut self)
pub async fn listen(&mut self)
Starts the health monitoring event loop.
This async method continuously listens for incoming events, periodic checks, and reminders. It processes client health updates based on received events and predefined timing intervals.
The loop will run until the event stream is closed or an exit condition is met.
§Behavior
- Sends the initial health report immediately upon start.
- Periodically checks client health status every
check_interval. - Sends reminder reports every
reminder_intervalif any clients are not healthy. - Processes events received from the event receiver to update client states.
Trait Implementations§
Source§impl<T: Debug + HealthReportSender> Debug for HealthMonitor<T>
impl<T: Debug + HealthReportSender> Debug for HealthMonitor<T>
Source§impl<T: HealthReportSender + Send + Sync + 'static> IntoSubsystem<NeverError> for HealthMonitor<T>
Available on crate feature tokio-graceful-shutdown only.
impl<T: HealthReportSender + Send + Sync + 'static> IntoSubsystem<NeverError> for HealthMonitor<T>
Available on crate feature
tokio-graceful-shutdown only.Source§async fn run(self, subsys: &mut SubsystemHandle) -> Result<(), NeverError>
async fn run(self, subsys: &mut SubsystemHandle) -> Result<(), NeverError>
The logic of the subsystem. Read more
Source§fn into_subsystem(
self,
) -> impl FnOnce(&mut SubsystemHandle<ErrWrapper>) -> Pin<Box<dyn Future<Output = Result<(), Err>> + Send + '_>>
fn into_subsystem( self, ) -> impl FnOnce(&mut SubsystemHandle<ErrWrapper>) -> Pin<Box<dyn Future<Output = Result<(), Err>> + Send + '_>>
Converts the object into a type that can be passed into
SubsystemHandle::start().Auto Trait Implementations§
impl<T> Freeze for HealthMonitor<T>where
T: Freeze,
impl<T> RefUnwindSafe for HealthMonitor<T>where
T: RefUnwindSafe,
impl<T> Send for HealthMonitor<T>where
T: Send,
impl<T> Sync for HealthMonitor<T>where
T: Sync,
impl<T> Unpin for HealthMonitor<T>where
T: Unpin,
impl<T> UnsafeUnpin for HealthMonitor<T>where
T: UnsafeUnpin,
impl<T> UnwindSafe for HealthMonitor<T>where
T: UnwindSafe,
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> Erasable for T
impl<T> Erasable for T
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