use interprocess::local_socket::{LocalSocketListener, LocalSocketStream};
use std::{
io::{self, prelude::*, BufReader},
error::Error,
};
fn main() -> Result<(), Box<dyn Error>> {
fn handle_error(
connection: io::Result<LocalSocketStream>,
) -> Option<LocalSocketStream> {
match connection {
Ok(val) => Some(val),
Err(error) => {
panic!("Incoming connection failed: {}", error);
}
}
}
let listener = LocalSocketListener::bind("/tmp/example.sock")?;
for mut conn in listener.incoming().filter_map(handle_error) {
println!("Incoming connection!");
conn.write_all(b"Hello from server!\n")?;
let mut conn = BufReader::new(conn);
let mut buffer = String::new();
conn.read_line(&mut buffer)?;
println!("Client answered: {}", buffer);
}
Ok(())
}