karyon_p2p/monitor/
event.rs1use karyon_net::Endpoint;
2
3use crate::PeerID;
4
5#[derive(Clone, Debug)]
7pub enum ConnectionKind {
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#[derive(Clone, Debug)]
20pub enum PoolEvent {
21 NewPeer(PeerID),
22 RemovePeer(PeerID),
23 HandshakeFailed(Option<PeerID>),
24 ConnectFailed(Option<PeerID>, Endpoint),
27 PeerAlreadyConnected(PeerID),
30}
31
32#[derive(Clone, Debug)]
34pub enum DiscoveryKind {
35 LookupStarted(Endpoint),
36 LookupFailed(Endpoint),
37 LookupSucceeded(Endpoint, usize),
38 RefreshStarted,
39 RefreshSucceeded(usize),
41 RefreshFailed,
42 EntryEvicted(PeerID),
44}
45
46impl ConnectionKind {
47 pub(super) fn get_endpoint(&self) -> Option<&Endpoint> {
48 match self {
49 ConnectionKind::Connected(endpoint)
50 | ConnectionKind::ConnectRetried(endpoint)
51 | ConnectionKind::ConnectFailed(endpoint)
52 | ConnectionKind::Accepted(endpoint)
53 | ConnectionKind::Disconnected(endpoint)
54 | ConnectionKind::Listening(endpoint)
55 | ConnectionKind::ListenFailed(endpoint) => Some(endpoint),
56 ConnectionKind::AcceptFailed => None,
57 }
58 }
59
60 pub(super) fn variant_name(&self) -> &'static str {
61 match self {
62 ConnectionKind::Connected(_) => "Connected",
63 ConnectionKind::ConnectRetried(_) => "ConnectRetried",
64 ConnectionKind::ConnectFailed(_) => "ConnectFailed",
65 ConnectionKind::Accepted(_) => "Accepted",
66 ConnectionKind::AcceptFailed => "AcceptFailed",
67 ConnectionKind::Disconnected(_) => "Disconnected",
68 ConnectionKind::Listening(_) => "Listening",
69 ConnectionKind::ListenFailed(_) => "ListenFailed",
70 }
71 }
72}
73
74impl PoolEvent {
75 pub(super) fn get_peer_id(&self) -> Option<&PeerID> {
76 match self {
77 PoolEvent::NewPeer(peer_id)
78 | PoolEvent::RemovePeer(peer_id)
79 | PoolEvent::PeerAlreadyConnected(peer_id) => Some(peer_id),
80 PoolEvent::HandshakeFailed(peer_id) | PoolEvent::ConnectFailed(peer_id, _) => {
81 peer_id.as_ref()
82 }
83 }
84 }
85
86 pub(super) fn get_endpoint(&self) -> Option<&Endpoint> {
87 match self {
88 PoolEvent::ConnectFailed(_, endpoint) => Some(endpoint),
89 _ => None,
90 }
91 }
92
93 pub(super) fn variant_name(&self) -> &'static str {
94 match self {
95 PoolEvent::NewPeer(_) => "NewPeer",
96 PoolEvent::RemovePeer(_) => "RemovePeer",
97 PoolEvent::HandshakeFailed(_) => "HandshakeFailed",
98 PoolEvent::ConnectFailed(_, _) => "ConnectFailed",
99 PoolEvent::PeerAlreadyConnected(_) => "PeerAlreadyConnected",
100 }
101 }
102}
103
104impl DiscoveryKind {
105 pub(super) fn get_endpoint(&self) -> Option<&Endpoint> {
106 match self {
107 DiscoveryKind::LookupStarted(endpoint)
108 | DiscoveryKind::LookupFailed(endpoint)
109 | DiscoveryKind::LookupSucceeded(endpoint, _) => Some(endpoint),
110 _ => None,
111 }
112 }
113
114 pub(super) fn get_size(&self) -> Option<usize> {
115 match self {
116 DiscoveryKind::LookupSucceeded(_, size) | DiscoveryKind::RefreshSucceeded(size) => {
117 Some(*size)
118 }
119 _ => None,
120 }
121 }
122
123 pub(super) fn get_peer_id(&self) -> Option<&PeerID> {
124 match self {
125 DiscoveryKind::EntryEvicted(peer_id) => Some(peer_id),
126 _ => None,
127 }
128 }
129
130 pub(super) fn variant_name(&self) -> &'static str {
131 match self {
132 DiscoveryKind::LookupStarted(_) => "LookupStarted",
133 DiscoveryKind::LookupFailed(_) => "LookupFailed",
134 DiscoveryKind::LookupSucceeded(_, _) => "LookupSucceeded",
135 DiscoveryKind::RefreshStarted => "RefreshStarted",
136 DiscoveryKind::RefreshSucceeded(_) => "RefreshSucceeded",
137 DiscoveryKind::RefreshFailed => "RefreshFailed",
138 DiscoveryKind::EntryEvicted(_) => "EntryEvicted",
139 }
140 }
141}