#[cfg(not(feature = "tokio"))]
fn main() {
eprintln!("This example is not available when the Tokio feature is disabled.");
}
#[cfg(feature = "tokio")]
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
use {
interprocess::local_socket::{
tokio::{prelude::*, Stream},
GenericFilePath, GenericNamespaced,
},
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 mut buffer = String::with_capacity(128);
let conn = Stream::connect(name).await?;
let mut recver = BufReader::new(&conn);
let mut sender = &conn;
let send = sender.write_all(b"Hello from client!\n");
let recv = recver.read_line(&mut buffer);
try_join!(send, recv)?;
drop(recver);
drop(conn);
print!("Server answered: {buffer}");
Ok(())
}