wasmer_wasix/journal/effector/syscalls/
sock_shutdown.rs

1use std::net::Shutdown;
2
3use super::*;
4
5impl JournalEffector {
6    pub fn save_sock_shutdown(
7        ctx: &mut FunctionEnvMut<'_, WasiEnv>,
8        fd: Fd,
9        shutdown: Shutdown,
10    ) -> anyhow::Result<()> {
11        Self::save_event(
12            ctx,
13            JournalEntry::SocketShutdownV1 {
14                fd,
15                how: shutdown.into(),
16            },
17        )
18    }
19
20    pub fn apply_sock_shutdown(
21        ctx: &mut FunctionEnvMut<'_, WasiEnv>,
22        fd: Fd,
23        shutdown: Shutdown,
24    ) -> anyhow::Result<()> {
25        crate::syscalls::sock_shutdown_internal(ctx, fd, shutdown)
26            .map(|r| r.map_err(|err| err.to_string()))
27            .unwrap_or_else(|err| Err(err.to_string()))
28            .map_err(|err| {
29                anyhow::format_err!(
30                    "journal restore error: failed to shutdown socket (fd={fd}, how={shutdown:?}) - {err}"
31                )
32            })?;
33        Ok(())
34    }
35}