ant_node/event.rs
1//! Node event system.
2
3use tokio::sync::broadcast;
4
5/// Events emitted by the node.
6#[derive(Debug, Clone)]
7pub enum NodeEvent {
8 /// Node has started successfully.
9 Started,
10
11 /// Node is shutting down.
12 ShuttingDown,
13
14 /// Connected to a peer.
15 PeerConnected {
16 /// Peer identifier.
17 peer_id: String,
18 },
19
20 /// Disconnected from a peer.
21 PeerDisconnected {
22 /// Peer identifier.
23 peer_id: String,
24 },
25
26 /// Data stored successfully.
27 DataStored {
28 /// Data address/key.
29 address: String,
30 },
31
32 /// Data retrieved successfully.
33 DataRetrieved {
34 /// Data address/key.
35 address: String,
36 },
37
38 /// Upgrade available.
39 UpgradeAvailable {
40 /// New version.
41 version: String,
42 },
43
44 /// Upgrade started.
45 UpgradeStarted {
46 /// Version being installed.
47 version: String,
48 },
49
50 /// Upgrade completed.
51 UpgradeComplete {
52 /// New version.
53 version: String,
54 },
55
56 /// Error occurred.
57 Error {
58 /// Error message.
59 message: String,
60 },
61}
62
63/// Channel for receiving node events.
64pub type NodeEventsChannel = broadcast::Receiver<NodeEvent>;
65
66/// Sender for node events.
67pub type NodeEventsSender = broadcast::Sender<NodeEvent>;
68
69/// Create a new event channel pair.
70#[must_use]
71pub fn create_event_channel() -> (NodeEventsSender, NodeEventsChannel) {
72 broadcast::channel(256)
73}