wasi_net/backend/
process.rs1use base64;
2use bincode;
3use serde::{Deserialize, Serialize};
4use std::{io, process::ExitStatus};
5
6use super::*;
7
8#[derive(Serialize, Deserialize, Debug)]
9pub enum MessageProcess {
10 Kill,
11 Exited(i32),
12 Stdin(Vec<u8>),
13 Stdout(Vec<u8>),
14 Stderr(Vec<u8>),
15}
16
17impl MessageProcess {
18 pub fn serialize(&self) -> io::Result<String> {
19 let ret = bincode::serialize(self).map_err(|err| {
20 io::Error::new(
21 io::ErrorKind::Other,
22 format!("failed to serialize into bincode bytes - {}", err),
23 )
24 })?;
25 Ok(base64::encode(&ret[..]))
26 }
27
28 pub fn deserialize(input: &str) -> io::Result<Self> {
29 let input = base64::decode(input.trim()).map_err(|err| {
30 io::Error::new(
31 io::ErrorKind::Other,
32 format!("failed to decode base64 string - {}", err),
33 )
34 })?;
35 Ok(bincode::deserialize(&input[..]).map_err(|err| {
36 io::Error::new(
37 io::ErrorKind::Other,
38 format!("failed to deserialize from bincode bytes - {}", err),
39 )
40 })?)
41 }
42}