wove/examples/tcp_echo.rs

26 lines
674 B
Rust

use futures_lite::StreamExt;
use wove::{
io::{AsyncReadLoan, AsyncWriteLoan, BufferResultExt},
io_impl::io_uring::IoUring,
};
pub async fn go(uring: &IoUring) -> std::io::Result<()> {
let mut listener = wove::net::TcpListener::bind(uring, "127.0.0.1:0").await?;
let addr = listener.local_addr().await?;
println!("Listening on {addr}");
let mut incoming = listener.incoming().await?;
while let Some(conn) = incoming.next().await {
let mut conn = conn?;
let (buf, _read_amt) = conn.read(vec![0; 4096]).await.buf_ok()?;
conn.write(buf).await.buf_ok()?;
}
Ok(())
}
pub fn main() {
let uring = IoUring::new().unwrap();
uring.block_on(go(&uring)).unwrap();
}