Skip to content

Commit eef3475

Browse files
authored
Merge pull request #987 from openmina/feat/more-peer-info
feat(rpc): Include more peer info
2 parents d64cdb7 + a1fd970 commit eef3475

File tree

2 files changed

+31
-13
lines changed

2 files changed

+31
-13
lines changed

node/src/rpc/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ pub enum ActionStatsResponse {
159159

160160
#[derive(Serialize, Deserialize, Debug, Clone)]
161161
pub enum PeerConnectionStatus {
162+
Disconnecting,
162163
Disconnected,
163164
Connecting,
164165
Connected,
@@ -172,8 +173,10 @@ pub struct RpcPeerInfo {
172173
pub best_tip_global_slot: Option<u32>,
173174
pub best_tip_timestamp: Option<u64>,
174175
pub connection_status: PeerConnectionStatus,
176+
pub connecting_details: Option<String>,
175177
pub address: Option<String>,
176178
pub incoming: bool,
179+
pub is_libp2p: bool,
177180
pub time: u64,
178181
}
179182

node/src/rpc/rpc_reducer.rs

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -641,31 +641,46 @@ pub fn collect_rpc_peers_info(state: &crate::State) -> Vec<RpcPeerInfo> {
641641
.iter()
642642
.map(|(peer_id, state)| {
643643
let best_tip = state.status.as_ready().and_then(|r| r.best_tip.as_ref());
644-
let (connection_status, time, incoming) = match &state.status {
644+
let (connection_status, time, incoming, connecting_details) = match &state.status {
645645
p2p::P2pPeerStatus::Connecting(c) => match c {
646-
p2p::connection::P2pConnectionState::Outgoing(o) => {
647-
(PeerConnectionStatus::Connecting, o.time().into(), false)
648-
}
649-
p2p::connection::P2pConnectionState::Incoming(i) => {
650-
(PeerConnectionStatus::Connecting, i.time().into(), true)
651-
}
646+
p2p::connection::P2pConnectionState::Outgoing(o) => (
647+
PeerConnectionStatus::Connecting,
648+
o.time().into(),
649+
false,
650+
Some(format!("{o:?}")),
651+
),
652+
p2p::connection::P2pConnectionState::Incoming(i) => (
653+
PeerConnectionStatus::Connecting,
654+
i.time().into(),
655+
true,
656+
Some(format!("{i:?}")),
657+
),
652658
},
653-
p2p::P2pPeerStatus::Disconnecting { time } => {
654-
(PeerConnectionStatus::Disconnected, (*time).into(), false)
655-
}
656-
p2p::P2pPeerStatus::Disconnected { time } => {
657-
(PeerConnectionStatus::Disconnected, (*time).into(), false)
658-
}
659+
p2p::P2pPeerStatus::Disconnecting { time } => (
660+
PeerConnectionStatus::Disconnecting,
661+
(*time).into(),
662+
false,
663+
None,
664+
),
665+
p2p::P2pPeerStatus::Disconnected { time } => (
666+
PeerConnectionStatus::Disconnected,
667+
(*time).into(),
668+
false,
669+
None,
670+
),
659671
p2p::P2pPeerStatus::Ready(r) => (
660672
PeerConnectionStatus::Connected,
661673
r.connected_since.into(),
662674
r.is_incoming,
675+
None,
663676
),
664677
};
665678
RpcPeerInfo {
666679
peer_id: *peer_id,
667680
connection_status,
681+
connecting_details,
668682
address: state.dial_opts.as_ref().map(|opts| opts.to_string()),
683+
is_libp2p: state.is_libp2p,
669684
incoming,
670685
best_tip: best_tip.map(|bt| bt.hash.clone()),
671686
best_tip_height: best_tip.map(|bt| bt.height()),

0 commit comments

Comments
 (0)