Attempt to revive the singlenode demo
This commit is contained in:
@@ -19,7 +19,7 @@ use solana::transaction::Transaction;
|
|||||||
use std::env;
|
use std::env;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::{stdin, Read};
|
use std::io::{stdin, Read};
|
||||||
use std::net::{IpAddr, SocketAddr, UdpSocket};
|
use std::net::{IpAddr, Ipv4Addr, SocketAddr, UdpSocket};
|
||||||
use std::process::exit;
|
use std::process::exit;
|
||||||
use std::sync::atomic::{AtomicBool, Ordering};
|
use std::sync::atomic::{AtomicBool, Ordering};
|
||||||
use std::sync::{Arc, RwLock};
|
use std::sync::{Arc, RwLock};
|
||||||
@@ -50,13 +50,13 @@ fn get_ip_addr() -> Option<IpAddr> {
|
|||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut threads = 4usize;
|
let mut threads = 4usize;
|
||||||
let mut num_nodes = 10usize;
|
let mut num_nodes = 0usize;
|
||||||
let mut leader = "leader.json".to_string();
|
|
||||||
|
|
||||||
let mut opts = Options::new();
|
let mut opts = Options::new();
|
||||||
opts.optopt("l", "", "leader", "leader.json");
|
opts.optopt("l", "", "leader", "leader.json");
|
||||||
opts.optopt("c", "", "client port", "port");
|
opts.optopt("c", "", "client port", "port");
|
||||||
opts.optopt("t", "", "number of threads", &format!("{}", threads));
|
opts.optopt("t", "", "number of threads", &format!("{}", threads));
|
||||||
|
opts.optflag("d", "dyn", "detect network address dynamically");
|
||||||
opts.optopt(
|
opts.optopt(
|
||||||
"n",
|
"n",
|
||||||
"",
|
"",
|
||||||
@@ -78,15 +78,14 @@ fn main() {
|
|||||||
print_usage(&program, opts);
|
print_usage(&program, opts);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if matches.opt_present("l") {
|
let mut addr: SocketAddr = "0.0.0.0:8010".parse().unwrap();
|
||||||
leader = matches.opt_str("l").unwrap();
|
|
||||||
}
|
|
||||||
let mut addr: SocketAddr = "127.0.0.1:8010".parse().unwrap();
|
|
||||||
if matches.opt_present("c") {
|
if matches.opt_present("c") {
|
||||||
let port = matches.opt_str("c").unwrap().parse().unwrap();
|
let port = matches.opt_str("c").unwrap().parse().unwrap();
|
||||||
addr.set_port(port);
|
addr.set_port(port);
|
||||||
}
|
}
|
||||||
addr.set_ip(get_ip_addr().unwrap());
|
if matches.opt_present("d") {
|
||||||
|
addr.set_ip(get_ip_addr().unwrap());
|
||||||
|
}
|
||||||
let client_addr: Arc<RwLock<SocketAddr>> = Arc::new(RwLock::new(addr));
|
let client_addr: Arc<RwLock<SocketAddr>> = Arc::new(RwLock::new(addr));
|
||||||
if matches.opt_present("t") {
|
if matches.opt_present("t") {
|
||||||
threads = matches.opt_str("t").unwrap().parse().expect("integer");
|
threads = matches.opt_str("t").unwrap().parse().expect("integer");
|
||||||
@@ -95,7 +94,13 @@ fn main() {
|
|||||||
num_nodes = matches.opt_str("n").unwrap().parse().expect("integer");
|
num_nodes = matches.opt_str("n").unwrap().parse().expect("integer");
|
||||||
}
|
}
|
||||||
|
|
||||||
let leader: ReplicatedData = read_leader(leader);
|
let leader = if matches.opt_present("l") {
|
||||||
|
read_leader(matches.opt_str("l").unwrap())
|
||||||
|
} else {
|
||||||
|
let server_addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), 8000);
|
||||||
|
ReplicatedData::new_leader(&server_addr)
|
||||||
|
};
|
||||||
|
|
||||||
let signal = Arc::new(AtomicBool::new(false));
|
let signal = Arc::new(AtomicBool::new(false));
|
||||||
let mut c_threads = vec![];
|
let mut c_threads = vec![];
|
||||||
let validators = converge(
|
let validators = converge(
|
||||||
@@ -237,6 +242,10 @@ fn converge(
|
|||||||
num_nodes: usize,
|
num_nodes: usize,
|
||||||
threads: &mut Vec<JoinHandle<()>>,
|
threads: &mut Vec<JoinHandle<()>>,
|
||||||
) -> Vec<ReplicatedData> {
|
) -> Vec<ReplicatedData> {
|
||||||
|
if num_nodes <= 2 {
|
||||||
|
return vec![];
|
||||||
|
}
|
||||||
|
|
||||||
//lets spy on the network
|
//lets spy on the network
|
||||||
let daddr = "0.0.0.0:0".parse().unwrap();
|
let daddr = "0.0.0.0:0".parse().unwrap();
|
||||||
let (spy, spy_gossip) = spy_node(client_addr);
|
let (spy, spy_gossip) = spy_node(client_addr);
|
||||||
|
Reference in New Issue
Block a user