1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//! Monitoring API for observing event flow through the system.
//!
//! Enable with the `monitoring` feature:
//!
//! ```toml
//! [dependencies]
//! maiko = { version = "0.3", features = ["monitoring"] }
//! ```
//!
//! # Overview
//!
//! The monitoring system provides hooks into the event lifecycle:
//! - Event dispatched, delivered, and handled
//! - Actor errors and lifecycle events
//!
//! # Example
//!
//! ```ignore
//! use maiko::monitoring::Monitor;
//!
//! struct EventLogger;
//!
//! impl<E: Event, T: Topic<E>> Monitor<E, T> for EventLogger {
//! fn on_event_handled(&self, envelope: &Envelope<E>, topic: &T, receiver: &ActorId) {
//! println!("[handled] {} by {}", envelope.id(), receiver.as_str());
//! }
//! }
//!
//! // Register with supervisor
//! let handle = sup.monitors().add(EventLogger).await;
//! ```
/// Unique identifier for a registered monitor.
pub type MonitorId = u16;
pub use MonitorCommand;
pub use MonitorDispatcher;
pub use Monitor;
pub use MonitorHandle;
pub use MonitoringEvent;
pub use MonitorRegistry;
pub use MonitoringSink;