wasmer_wasix/journal/effector/syscalls/
sock_bind.rs

1use std::net::SocketAddr;
2
3use super::*;
4
5impl JournalEffector {
6    pub fn save_sock_bind(
7        ctx: &mut FunctionEnvMut<'_, WasiEnv>,
8        fd: Fd,
9        addr: SocketAddr,
10    ) -> anyhow::Result<()> {
11        Self::save_event(ctx, JournalEntry::SocketBindV1 { fd, addr })
12    }
13
14    pub fn apply_sock_bind(
15        ctx: &mut FunctionEnvMut<'_, WasiEnv>,
16        fd: Fd,
17        addr: SocketAddr,
18    ) -> anyhow::Result<()> {
19        crate::syscalls::sock_bind_internal(ctx, fd, addr)
20            .map(|r| r.map_err(|err| err.to_string()))
21            .unwrap_or_else(|err| Err(err.to_string()))
22            .map_err(|err| {
23                anyhow::format_err!(
24                    "journal restore error: failed to bind socket to address (fd={fd}, addr={addr}) - {err}")
25            })?;
26        Ok(())
27    }
28}