use futures::{
io::{AsyncBufReadExt, AsyncWriteExt, BufReader},
try_join,
};
use interprocess::local_socket::{tokio::LocalSocketStream, NameTypeSupport};
pub async fn main() -> anyhow::Result<()> {
let name = {
use NameTypeSupport::*;
match NameTypeSupport::query() {
OnlyPaths => "/tmp/example.sock",
OnlyNamespaced | Both => "@example.sock",
}
};
let conn = LocalSocketStream::connect(name).await?;
let (reader, mut writer) = conn.into_split();
let mut reader = BufReader::new(reader);
let mut buffer = String::with_capacity(128);
let write = writer.write_all(b"Hello from client!\n");
let read = reader.read_line(&mut buffer);
try_join!(write, read)?;
drop((reader, writer));
println!("Server answered: {}", buffer.trim());
Ok(())
}