Hey!
use io_uring::{IoUring, Probe, opcode, types::Fd};
use std::{net::TcpListener, os::fd::AsRawFd};
const ENTRIES: u32 = 256;
fn main() -> anyhow::Result<()> {
let mut ring = IoUring::new(ENTRIES)?;
let (submitter, mut submissions, mut completions) = ring.split();
let socket = TcpListener::bind("127.0.0.1:3456")?;
println!("Listening at {}", socket.local_addr()?);
let mut probe = Probe::new();
submitter.register_probe(&mut probe)?;
dbg!(probe.is_supported(opcode::AcceptMulti::CODE));
unsafe { submissions.push(&opcode::AcceptMulti::new(Fd(socket.as_raw_fd())).build()) }?;
submitter.submit_and_wait(1)?;
println!("Connected");
let buffer = b"Hello World!\n";
unsafe {
submissions.push(
&opcode::Send::new(
Fd(completions.next().unwrap().result()),
buffer.as_ptr(),
buffer.len() as u32,
)
.build(),
)
}?;
submitter.submit()?;
std::hint::black_box(socket);
Ok(())
}```
This code is getting stuck in the submit_and_wait. I'm connecting using netcat. The probe returns true.