#[cfg(not(all(windows, feature = "tokio")))]
fn main() {}
#[cfg(all(windows, feature = "tokio"))]
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
use interprocess::os::windows::named_pipe::{pipe_mode, tokio::*};
use tokio::{
io::{AsyncReadExt, AsyncWriteExt},
try_join,
};
let conn = DuplexPipeStream::<pipe_mode::Bytes>::connect_by_path(r"\\.\pipe\Example").await?;
let (mut recver, mut sender) = conn.split();
let mut buffer = String::with_capacity(128);
let send = async {
sender.write_all(b"Hello from client!").await?;
sender.shutdown().await?;
Ok(())
};
let recv = recver.read_to_string(&mut buffer);
try_join!(send, recv)?;
drop((recver, sender));
println!("Server answered: {}", buffer.trim());
Ok(())
}