Client

Add the src/client.rs file and import a few types:

use failure::Error;
use grpc_ring::Remote;
use std::env;

We need a generic Error from the failure crate, because it's a universal type for most error handling cases, and import the Remote struct we created before.

The client is an extremely simple tool. It calls the StartRollCall remote gRPC method of a service with the address provided in the NEXT environment variable:

fn main() -> Result<(), Error> {
let next = env::var("NEXT")?.parse()?;
let remote = Remote::new(next)?;
remote.start_roll_call()?;
Ok(())
}

Create the Remote instance with the parsed SocketAddr value and perform a call. This is it. The server is very complex. Let's implement it.