clean up fullnode cmdline
* fix documentation, other opt parameters * add support for a named output file, remove hardcoded "leader.log" * resurrect stdout as the default output
This commit is contained in:
@@ -16,7 +16,7 @@ use solana::server::Server;
|
|||||||
use solana::transaction::Instruction;
|
use solana::transaction::Instruction;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::{stdin, Read};
|
use std::io::{stdin, stdout, Read, Write};
|
||||||
use std::net::{IpAddr, Ipv4Addr, SocketAddr, UdpSocket};
|
use std::net::{IpAddr, Ipv4Addr, SocketAddr, UdpSocket};
|
||||||
use std::process::exit;
|
use std::process::exit;
|
||||||
use std::sync::atomic::AtomicBool;
|
use std::sync::atomic::AtomicBool;
|
||||||
@@ -35,14 +35,16 @@ fn print_usage(program: &str, opts: Options) {
|
|||||||
fn main() {
|
fn main() {
|
||||||
env_logger::init();
|
env_logger::init();
|
||||||
let mut opts = Options::new();
|
let mut opts = Options::new();
|
||||||
opts.optopt("l", "", "load", "load my identity to path.json");
|
|
||||||
opts.optflag("h", "help", "print help");
|
opts.optflag("h", "help", "print help");
|
||||||
|
opts.optopt("l", "", "run with the identity found in FILE", "FILE");
|
||||||
|
opts.optopt("v", "", "validate; find leader's identity in FILE", "FILE");
|
||||||
opts.optopt(
|
opts.optopt(
|
||||||
"v",
|
"o",
|
||||||
"",
|
"",
|
||||||
"validator",
|
"output log to FILE, defaults to stdout (ignored by validators)",
|
||||||
"run as replicate with path to leader.json",
|
"FILE",
|
||||||
);
|
);
|
||||||
|
|
||||||
let args: Vec<String> = env::args().collect();
|
let args: Vec<String> = env::args().collect();
|
||||||
let matches = match opts.parse(&args[1..]) {
|
let matches = match opts.parse(&args[1..]) {
|
||||||
Ok(m) => m,
|
Ok(m) => m,
|
||||||
@@ -137,7 +139,16 @@ fn main() {
|
|||||||
} else {
|
} else {
|
||||||
eprintln!("starting leader... {}", repl_data.requests_addr);
|
eprintln!("starting leader... {}", repl_data.requests_addr);
|
||||||
repl_data.current_leader_id = repl_data.id.clone();
|
repl_data.current_leader_id = repl_data.id.clone();
|
||||||
let file = File::create("leader.log").expect("leader.log create");
|
|
||||||
|
let outfile: Box<Write + Send + 'static> = if matches.opt_present("o") {
|
||||||
|
let path = matches.opt_str("o").unwrap();
|
||||||
|
Box::new(
|
||||||
|
File::create(&path).expect(&format!("unable to open output file \"{}\"", path)),
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
Box::new(stdout())
|
||||||
|
};
|
||||||
|
|
||||||
let server = Server::new_leader(
|
let server = Server::new_leader(
|
||||||
bank,
|
bank,
|
||||||
//Some(Duration::from_millis(1000)),
|
//Some(Duration::from_millis(1000)),
|
||||||
@@ -149,7 +160,7 @@ fn main() {
|
|||||||
UdpSocket::bind("0.0.0.0:0").unwrap(),
|
UdpSocket::bind("0.0.0.0:0").unwrap(),
|
||||||
UdpSocket::bind(repl_data.gossip_addr).unwrap(),
|
UdpSocket::bind(repl_data.gossip_addr).unwrap(),
|
||||||
exit.clone(),
|
exit.clone(),
|
||||||
file,
|
outfile,
|
||||||
);
|
);
|
||||||
server.thread_hdls
|
server.thread_hdls
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user