Forwarder: separate get_leader_and_addr (#30922)
This commit is contained in:
parent
564f8c9b17
commit
8e910b494f
|
@ -17,7 +17,7 @@ use {
|
||||||
solana_streamer::sendmmsg::batch_send,
|
solana_streamer::sendmmsg::batch_send,
|
||||||
std::{
|
std::{
|
||||||
iter::repeat,
|
iter::repeat,
|
||||||
net::UdpSocket,
|
net::{SocketAddr, UdpSocket},
|
||||||
sync::{atomic::Ordering, Arc, RwLock},
|
sync::{atomic::Ordering, Arc, RwLock},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -147,19 +147,8 @@ impl Forwarder {
|
||||||
usize,
|
usize,
|
||||||
Option<Pubkey>,
|
Option<Pubkey>,
|
||||||
) {
|
) {
|
||||||
let leader_and_addr = match forward_option {
|
let Some((leader_pubkey, addr)) = self.get_leader_and_addr(forward_option) else {
|
||||||
ForwardOption::NotForward => return (Ok(()), 0, None),
|
return (Ok(()), 0, None);
|
||||||
ForwardOption::ForwardTransaction => {
|
|
||||||
next_leader_tpu_forwards(&self.cluster_info, &self.poh_recorder)
|
|
||||||
}
|
|
||||||
|
|
||||||
ForwardOption::ForwardTpuVote => {
|
|
||||||
next_leader_tpu_vote(&self.cluster_info, &self.poh_recorder)
|
|
||||||
}
|
|
||||||
};
|
|
||||||
let (leader_pubkey, addr) = match leader_and_addr {
|
|
||||||
Some(leader_and_addr) => leader_and_addr,
|
|
||||||
None => return (Ok(()), 0, None),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
self.update_data_budget();
|
self.update_data_budget();
|
||||||
|
@ -214,6 +203,20 @@ impl Forwarder {
|
||||||
(Ok(()), packet_vec_len, Some(leader_pubkey))
|
(Ok(()), packet_vec_len, Some(leader_pubkey))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get the pubkey and socket address for the leader to forward to
|
||||||
|
fn get_leader_and_addr(&self, forward_option: &ForwardOption) -> Option<(Pubkey, SocketAddr)> {
|
||||||
|
match forward_option {
|
||||||
|
ForwardOption::NotForward => None,
|
||||||
|
ForwardOption::ForwardTransaction => {
|
||||||
|
next_leader_tpu_forwards(&self.cluster_info, &self.poh_recorder)
|
||||||
|
}
|
||||||
|
|
||||||
|
ForwardOption::ForwardTpuVote => {
|
||||||
|
next_leader_tpu_vote(&self.cluster_info, &self.poh_recorder)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Re-fill the data budget if enough time has passed
|
/// Re-fill the data budget if enough time has passed
|
||||||
fn update_data_budget(&self) {
|
fn update_data_budget(&self) {
|
||||||
const INTERVAL_MS: u64 = 100;
|
const INTERVAL_MS: u64 = 100;
|
||||||
|
|
Loading…
Reference in New Issue