wasmer_wasix/syscalls/wasix/
sock_status.rs1use super::*;
2use crate::syscalls::*;
3
4#[instrument(level = "trace", skip_all, fields(%sock, status = field::Empty), ret)]
7pub fn sock_status<M: MemorySize>(
8 mut ctx: FunctionEnvMut<'_, WasiEnv>,
9 sock: WasiFd,
10 ret_status: WasmPtr<Sockstatus, M>,
11) -> Errno {
12 let status = wasi_try!(__sock_actor(
13 &mut ctx,
14 sock,
15 Rights::empty(),
16 |socket, _| socket.status()
17 ));
18
19 use crate::net::socket::WasiSocketStatus;
20 let status = match status {
21 WasiSocketStatus::Opening => Sockstatus::Opening,
22 WasiSocketStatus::Opened => Sockstatus::Opened,
23 WasiSocketStatus::Closed => Sockstatus::Closed,
24 WasiSocketStatus::Failed => Sockstatus::Failed,
25 };
26 Span::current().record("status", format!("{status:?}"));
27
28 let env = ctx.data();
29 let memory = unsafe { env.memory_view(&ctx) };
30 wasi_try_mem!(ret_status.write(&memory, status));
31 Errno::Success
32}