Function busyrpc::new_client

source ·
pub fn new_client<R: Resolver + Send + Sync + 'static>(
    options: ClientOptions,
    resolver: R
) -> Arc<dyn Client + Send + Sync>
Expand description

Create a new client from the options and resolver.

Examples found in repository?
examples/busyrpc-benchmark-client.rs (line 67)
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
fn main() {
    let (options, free) =
        BenchmarkOptions::from_command_line("Usage: busyrpc-benchmark-client [OPTIONS]");
    if !free.is_empty() {
        eprintln!("command takes no arguments");
        std::process::exit(1);
    }
    std::thread::spawn(|| {
        let mut collector = Collector::new();
        busyrpc::register_biometrics(&mut collector);
        let fout = File::create("/dev/stdout").unwrap();
        let mut emit = PlainTextEmitter::new(fout);
        loop {
            let now = SystemTime::now()
                .duration_since(SystemTime::UNIX_EPOCH)
                .expect("clock should never fail")
                .as_millis()
                .try_into()
                .expect("millis since epoch should fit u64");
            if let Err(e) = collector.emit(&mut emit, now) {
                eprintln!("collector error: {}", e);
            }
            std::thread::sleep(std::time::Duration::from_millis(249));
        }
    });
    let client = new_client(options.client, options.connect.clone());
    let request_counter = Arc::new(AtomicU64::default());
    let mut threads = Vec::new();
    for _ in 0..options.threads {
        let cl = Arc::clone(&client);
        let rc = Arc::clone(&request_counter);
        threads.push(std::thread::spawn(move || {
            worker(cl, rc, options.rpcs);
        }));
    }
    for thread in threads.into_iter() {
        thread.join().unwrap();
    }
}