simple_connection/
simple_connection.rs

1//! A simple transmitting-u32 example between server and client.
2//!
3//! You can test this out by running:
4//!
5//!     cargo run --example simple_connection server
6//!
7//! And then in another window run:
8//!
9//!     cargo run --example simple_connection client
10//!
11//! If it works, client should receive even number and server should receive odd number until client
12//! receives 20.
13
14extern crate tokio;
15extern crate msg_transmitter;
16
17use msg_transmitter::*;
18use std::env;
19
20fn main() {
21    let a = env::args().skip(1).collect::<Vec<_>>();
22    match a.first().unwrap().as_str() {
23        "client" => client(),
24        "server" => server(),
25        _ => panic!("failed"),
26    };
27}
28
29fn server() {
30    let server = create_tcp_server("127.0.0.1:6666", "server");
31    let server_task = server.start_server(0, |client_name, msg| {
32        println!("{}: {}", client_name, msg);
33        vec![(client_name, msg + 1)]
34    });
35    tokio::run(server_task);
36}
37
38fn client() {
39    let client = create_tcp_client("127.0.0.1:6666", "client");
40    let client_task = client.start_client(|msg: u32| {
41        println!("{}", msg);
42        if msg < 20 {
43            vec![msg + 1]
44        } else {
45            std::process::exit(0);
46        }
47    });
48    tokio::run(client_task);
49}