karyon_p2p/monitor/
event.rs

1use karyon_net::Endpoint;
2
3use crate::PeerID;
4
5/// Defines connection-related events.
6#[derive(Clone, Debug)]
7pub enum ConnEvent {
8    Connected(Endpoint),
9    ConnectRetried(Endpoint),
10    ConnectFailed(Endpoint),
11    Accepted(Endpoint),
12    AcceptFailed,
13    Disconnected(Endpoint),
14    Listening(Endpoint),
15    ListenFailed(Endpoint),
16}
17
18/// Defines `PP` events.
19#[derive(Clone, Debug)]
20pub enum PPEvent {
21    NewPeer(PeerID),
22    RemovePeer(PeerID),
23}
24
25/// Defines `Discovery` events.
26#[derive(Clone, Debug)]
27pub enum DiscvEvent {
28    LookupStarted(Endpoint),
29    LookupFailed(Endpoint),
30    LookupSucceeded(Endpoint, usize),
31    RefreshStarted,
32}
33
34impl ConnEvent {
35    pub(super) fn get_endpoint(&self) -> Option<&Endpoint> {
36        match self {
37            ConnEvent::Connected(endpoint)
38            | ConnEvent::ConnectRetried(endpoint)
39            | ConnEvent::ConnectFailed(endpoint)
40            | ConnEvent::Accepted(endpoint)
41            | ConnEvent::Disconnected(endpoint)
42            | ConnEvent::Listening(endpoint)
43            | ConnEvent::ListenFailed(endpoint) => Some(endpoint),
44            ConnEvent::AcceptFailed => None,
45        }
46    }
47
48    pub(super) fn variant_name(&self) -> &'static str {
49        match self {
50            ConnEvent::Connected(_) => "Connected",
51            ConnEvent::ConnectRetried(_) => "ConnectRetried",
52            ConnEvent::ConnectFailed(_) => "ConnectFailed",
53            ConnEvent::Accepted(_) => "Accepted",
54            ConnEvent::AcceptFailed => "AcceptFailed",
55            ConnEvent::Disconnected(_) => "Disconnected",
56            ConnEvent::Listening(_) => "Listening",
57            ConnEvent::ListenFailed(_) => "ListenFailed",
58        }
59    }
60}
61
62impl PPEvent {
63    pub(super) fn get_peer_id(&self) -> Option<&PeerID> {
64        match self {
65            PPEvent::NewPeer(peer_id) | PPEvent::RemovePeer(peer_id) => Some(peer_id),
66        }
67    }
68    pub(super) fn variant_name(&self) -> &'static str {
69        match self {
70            PPEvent::NewPeer(_) => "NewPeer",
71            PPEvent::RemovePeer(_) => "RemovePeer",
72        }
73    }
74}
75
76impl DiscvEvent {
77    pub(super) fn get_endpoint_and_size(&self) -> (Option<&Endpoint>, Option<usize>) {
78        match self {
79            DiscvEvent::LookupStarted(endpoint) | DiscvEvent::LookupFailed(endpoint) => {
80                (Some(endpoint), None)
81            }
82            DiscvEvent::LookupSucceeded(endpoint, size) => (Some(endpoint), Some(*size)),
83            DiscvEvent::RefreshStarted => (None, None),
84        }
85    }
86
87    pub(super) fn variant_name(&self) -> &'static str {
88        match self {
89            DiscvEvent::LookupStarted(_) => "LookupStarted",
90            DiscvEvent::LookupFailed(_) => "LookupFailed",
91            DiscvEvent::LookupSucceeded(_, _) => "LookupSucceeded",
92            DiscvEvent::RefreshStarted => "RefreshStarted",
93        }
94    }
95}