26 lines
674 B
Rust
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();
|
|
}
|