diff --git a/src/forker.rs b/src/forker.rs index 93e50115..ad195ec1 100644 --- a/src/forker.rs +++ b/src/forker.rs @@ -1,10 +1,12 @@ mod io; +mod protocol; use { crate::{ async_engine::{AsyncEngine, SpawnedFuture}, compositor::{DISPLAY, LIBEI_SOCKET, WAYLAND_DISPLAY}, forker::io::{IoIn, IoOut}, + forker::protocol::{ForkerMessage, ServerMessage, bincode_ops}, io_uring::IoUring, state::State, utils::{ @@ -23,7 +25,6 @@ use { ahash::AHashMap, bincode::Options, log::Level, - serde::{Deserialize, Serialize}, std::{ cell::{Cell, RefCell}, env, @@ -37,13 +38,6 @@ use { uapi::{Errno, Fd, IntoUstr, OwnedFd, UstrPtr, c}, }; -pub fn bincode_ops() -> impl Options { - bincode::DefaultOptions::new() - .with_fixint_encoding() - .with_little_endian() - .with_no_limit() -} - pub struct ForkerProxy { pidfd: Rc, socket: Rc, @@ -299,34 +293,6 @@ impl ForkerProxy { } } -#[derive(Serialize, Deserialize)] -enum ServerMessage { - SetEnv { - var: Vec, - val: Option>, - }, - Spawn { - prog: String, - args: Vec, - env: Vec<(String, Option)>, - fds: Vec, - pidfd_id: Option, - }, -} - -#[derive(Serialize, Deserialize)] -enum ForkerMessage { - Log { - level: usize, - msg: String, - }, - PidFd { - id: u32, - success: bool, - pid: c::pid_t, - }, -} - struct Forker { socket: Rc, ae: Rc, diff --git a/src/forker/io.rs b/src/forker/io.rs index 6f735070..f006f786 100644 --- a/src/forker/io.rs +++ b/src/forker/io.rs @@ -6,7 +6,7 @@ use { use { crate::{ - forker::{ForkerError, bincode_ops}, + forker::{ForkerError, protocol::bincode_ops}, io_uring::IoUring, utils::{ buf::DynamicBuf, diff --git a/src/forker/protocol.rs b/src/forker/protocol.rs new file mode 100644 index 00000000..9e28e7bc --- /dev/null +++ b/src/forker/protocol.rs @@ -0,0 +1,40 @@ +use { + bincode::Options, + serde::{Deserialize, Serialize}, + uapi::c, +}; + +pub(super) fn bincode_ops() -> impl Options { + bincode::DefaultOptions::new() + .with_fixint_encoding() + .with_little_endian() + .with_no_limit() +} + +#[derive(Serialize, Deserialize)] +pub(super) enum ServerMessage { + SetEnv { + var: Vec, + val: Option>, + }, + Spawn { + prog: String, + args: Vec, + env: Vec<(String, Option)>, + fds: Vec, + pidfd_id: Option, + }, +} + +#[derive(Serialize, Deserialize)] +pub(super) enum ForkerMessage { + Log { + level: usize, + msg: String, + }, + PidFd { + id: u32, + success: bool, + pid: c::pid_t, + }, +}