Skip to content

Commit a212457

Browse files
committed
(fix): add incoming: bool field in rpc response
1 parent 1df4e08 commit a212457

File tree

3 files changed

+18
-53
lines changed

3 files changed

+18
-53
lines changed

node/src/rpc/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ mod rpc_actions;
2424
pub use rpc_actions::*;
2525

2626
mod rpc_reducer;
27+
pub use rpc_reducer::collect_rpc_peers_info;
2728

2829
mod rpc_impls;
2930

@@ -164,6 +165,7 @@ pub struct RpcPeerInfo {
164165
pub best_tip_timestamp: Option<u64>,
165166
pub connection_status: PeerConnectionStatus,
166167
pub address: Option<String>,
168+
pub incoming: bool,
167169
pub time: u64,
168170
}
169171

node/src/rpc/rpc_reducer.rs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -613,35 +613,38 @@ impl RpcState {
613613
}
614614
}
615615

616-
fn collect_rpc_peers_info(state: &crate::State) -> Vec<RpcPeerInfo> {
616+
pub fn collect_rpc_peers_info(state: &crate::State) -> Vec<RpcPeerInfo> {
617617
state.p2p.ready().map_or_else(Vec::new, |p2p| {
618618
p2p.peers
619619
.iter()
620620
.map(|(peer_id, state)| {
621621
let best_tip = state.status.as_ready().and_then(|r| r.best_tip.as_ref());
622-
let (connection_status, time) = match &state.status {
622+
let (connection_status, time, incoming) = match &state.status {
623623
p2p::P2pPeerStatus::Connecting(c) => match c {
624624
p2p::connection::P2pConnectionState::Outgoing(o) => {
625-
(PeerConnectionStatus::Connecting, o.time().into())
625+
(PeerConnectionStatus::Connecting, o.time().into(), false)
626626
}
627627
p2p::connection::P2pConnectionState::Incoming(i) => {
628-
(PeerConnectionStatus::Connecting, i.time().into())
628+
(PeerConnectionStatus::Connecting, i.time().into(), true)
629629
}
630630
},
631631
p2p::P2pPeerStatus::Disconnecting { time } => {
632-
(PeerConnectionStatus::Disconnected, (*time).into())
632+
(PeerConnectionStatus::Disconnected, (*time).into(), false)
633633
}
634634
p2p::P2pPeerStatus::Disconnected { time } => {
635-
(PeerConnectionStatus::Disconnected, (*time).into())
636-
}
637-
p2p::P2pPeerStatus::Ready(r) => {
638-
(PeerConnectionStatus::Connected, r.connected_since.into())
635+
(PeerConnectionStatus::Disconnected, (*time).into(), false)
639636
}
637+
p2p::P2pPeerStatus::Ready(r) => (
638+
PeerConnectionStatus::Connected,
639+
r.connected_since.into(),
640+
r.is_incoming,
641+
),
640642
};
641643
RpcPeerInfo {
642644
peer_id: *peer_id,
643645
connection_status,
644646
address: state.dial_opts.as_ref().map(|opts| opts.to_string()),
647+
incoming,
645648
best_tip: best_tip.map(|bt| bt.hash.clone()),
646649
best_tip_height: best_tip.map(|bt| bt.height()),
647650
best_tip_global_slot: best_tip.map(|bt| bt.global_slot_since_genesis()),

node/src/rpc_effectful/rpc_effectful_effects.rs

Lines changed: 4 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
use super::RpcEffectfulAction;
1+
use super::{super::rpc, RpcEffectfulAction};
22
use crate::{
33
block_producer::BlockProducerWonSlot,
44
external_snark_worker::available_job_to_snark_worker_spec,
55
p2p::connection::P2pConnectionResponse,
66
p2p_ready,
77
rpc::{
88
AccountQuery, AccountSlim, ActionStatsQuery, ActionStatsResponse, CurrentMessageProgress,
9-
LedgerSyncProgress, MessagesStats, PeerConnectionStatus, RpcAction, RpcBlockProducerStats,
9+
LedgerSyncProgress, MessagesStats, RpcAction, RpcBlockProducerStats,
1010
RpcMessageProgressResponse, RpcNodeStatus, RpcNodeStatusTransactionPool,
1111
RpcNodeStatusTransitionFrontier, RpcNodeStatusTransitionFrontierBlockSummary,
12-
RpcNodeStatusTransitionFrontierSync, RpcPeerInfo, RpcRequestExtraData, RpcScanStateSummary,
12+
RpcNodeStatusTransitionFrontierSync, RpcRequestExtraData, RpcScanStateSummary,
1313
RpcScanStateSummaryBlock, RpcScanStateSummaryBlockTransaction,
1414
RpcScanStateSummaryBlockTransactionKind, RpcScanStateSummaryScanStateJob,
1515
RpcSnarkPoolJobFull, RpcSnarkPoolJobSnarkWork, RpcSnarkPoolJobSummary,
@@ -72,7 +72,7 @@ pub fn rpc_effects<S: Service>(store: &mut Store<S>, action: ActionWithMeta<RpcE
7272
target: state.transition_frontier.sync.best_tip().map(block_summary),
7373
},
7474
},
75-
peers: collect_rpc_peers_info(state),
75+
peers: rpc::collect_rpc_peers_info(state),
7676
snark_pool: state.snark_pool.jobs_iter().fold(
7777
Default::default(),
7878
|mut acc, job| {
@@ -709,43 +709,3 @@ pub fn rpc_effects<S: Service>(store: &mut Store<S>, action: ActionWithMeta<RpcE
709709
}
710710
}
711711
}
712-
713-
fn collect_rpc_peers_info(state: &crate::State) -> Vec<RpcPeerInfo> {
714-
state.p2p.ready().map_or_else(Vec::new, |p2p| {
715-
p2p.peers
716-
.iter()
717-
.map(|(peer_id, state)| {
718-
let best_tip = state.status.as_ready().and_then(|r| r.best_tip.as_ref());
719-
let (connection_status, time) = match &state.status {
720-
p2p::P2pPeerStatus::Connecting(c) => match c {
721-
p2p::connection::P2pConnectionState::Outgoing(o) => {
722-
(PeerConnectionStatus::Connecting, o.time().into())
723-
}
724-
p2p::connection::P2pConnectionState::Incoming(i) => {
725-
(PeerConnectionStatus::Connecting, i.time().into())
726-
}
727-
},
728-
p2p::P2pPeerStatus::Disconnecting { time } => {
729-
(PeerConnectionStatus::Disconnected, (*time).into())
730-
}
731-
p2p::P2pPeerStatus::Disconnected { time } => {
732-
(PeerConnectionStatus::Disconnected, (*time).into())
733-
}
734-
p2p::P2pPeerStatus::Ready(r) => {
735-
(PeerConnectionStatus::Connected, r.connected_since.into())
736-
}
737-
};
738-
RpcPeerInfo {
739-
peer_id: *peer_id,
740-
connection_status,
741-
address: state.dial_opts.as_ref().map(|opts| opts.to_string()),
742-
best_tip: best_tip.map(|bt| bt.hash.clone()),
743-
best_tip_height: best_tip.map(|bt| bt.height()),
744-
best_tip_global_slot: best_tip.map(|bt| bt.global_slot_since_genesis()),
745-
best_tip_timestamp: best_tip.map(|bt| bt.timestamp().into()),
746-
time,
747-
}
748-
})
749-
.collect()
750-
})
751-
}

0 commit comments

Comments
 (0)