#[cfg(not(feature = "tokio"))]
fn main() {}
#[cfg(feature = "tokio")]
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
use interprocess::local_socket::{
tokio::{prelude::*, Stream},
GenericFilePath, GenericNamespaced,
};
use tokio::{
io::{AsyncBufReadExt, AsyncWriteExt, BufReader},
try_join,
};
let name = if GenericNamespaced::is_supported() {
"example.sock".to_ns_name::<GenericNamespaced>()?
} else {
"/tmp/example.sock".to_fs_name::<GenericFilePath>()?
};
let conn = Stream::connect(name).await?;
let (recver, mut sender) = conn.split();
let mut recver = BufReader::new(recver);
let mut buffer = String::with_capacity(128);
let send = sender.write_all(b"Hello from client!\n");
let recv = recver.read_line(&mut buffer);
try_join!(send, recv)?;
drop((recver, sender));
println!("Server answered: {}", buffer.trim());
Ok(())
}