use gossip to find the leader for every airdrop request

This commit is contained in:
Rob Walker
2018-09-10 20:25:14 -07:00
parent 40aa0654fa
commit c3fc98c48f
2 changed files with 44 additions and 65 deletions

View File

@@ -2,7 +2,6 @@ extern crate bincode;
extern crate bytes;
#[macro_use]
extern crate clap;
#[macro_use]
extern crate log;
extern crate serde_json;
extern crate solana;
@@ -16,7 +15,6 @@ use solana::drone::{Drone, DroneRequest, DRONE_PORT};
use solana::logger;
use solana::metrics::set_panic_hook;
use solana::signature::read_keypair;
use solana::thin_client::poll_gossip_for_leader;
use std::error;
use std::io;
use std::net::{Ipv4Addr, SocketAddr};
@@ -74,13 +72,6 @@ fn main() -> Result<(), Box<error::Error>> {
.takes_value(true)
.help("Request limit for time slice"),
)
.arg(
Arg::with_name("timeout")
.long("timeout")
.value_name("SECONDS")
.takes_value(true)
.help("Max SECONDS to wait to get necessary gossip from the network"),
)
.get_matches();
let network = matches
@@ -107,23 +98,13 @@ fn main() -> Result<(), Box<error::Error>> {
} else {
request_cap = None;
}
let timeout: Option<u64>;
if let Some(secs) = matches.value_of("timeout") {
timeout = Some(secs.to_string().parse().expect("failed to parse timeout"));
} else {
timeout = None;
}
info!("Drone waiting for network at {:?}...", network);
let leader = poll_gossip_for_leader(network, timeout)?;
let drone_addr = socketaddr!(0, DRONE_PORT);
let drone = Arc::new(Mutex::new(Drone::new(
mint_keypair,
drone_addr,
leader.contact_info.tpu,
leader.contact_info.rpu,
network,
time_slice,
request_cap,
)));