#[cfg(all(target_os = "linux"))]
pub fn ipc_valid(v: String) -> std::result::Result<(), String> {
match v.as_str() {
"netlink" | "unix" | "char" => Ok(()),
_ => Err(format!("ipc must be one of (netlink|unix|char): {:?}", v)),
}
}
#[cfg(not(target_os = "linux"))]
pub fn ipc_valid(v: String) -> std::result::Result<(), String> {
match v.as_str() {
"unix" => Ok(()),
_ => Err(format!("ipc must be one of (unix): {:?}", v)),
}
}
#[macro_export]
macro_rules! start {
($ipc:expr_2021, $alg: expr_2021) => {{
use $crate::ipc::Blocking;
$crate::start!($ipc, $alg, Blocking)
}};
($ipc:expr_2021, $alg:expr_2021, $blk:ty) => {{ $crate::start!($ipc, $alg, $blk, "portus") }};
($ipc:expr_2021, $alg:expr_2021, $blk:ty, $bindaddr:expr_2021) => {{
use $crate::ipc::BackendBuilder;
match $ipc {
"unix" => {
use $crate::ipc::unix::Socket;
let b = Socket::<$blk>::new($bindaddr)
.map(|sk| BackendBuilder { sock: sk })
.expect("ipc initialization");
$crate::RunBuilder::new(b).default_alg($alg).run()
}
#[cfg(all(target_os = "linux"))]
"netlink" => {
use $crate::ipc::netlink::Socket;
let b = Socket::<$blk>::new()
.map(|sk| BackendBuilder { sock: sk })
.expect("ipc initialization");
$crate::RunBuilder::new(b).default_alg($alg).run()
}
#[cfg(all(target_os = "linux"))]
"char" => {
use $crate::ipc::kp::Socket;
let b = Socket::<$blk>::new()
.map(|sk| BackendBuilder { sock: sk })
.expect("ipc initialization");
$crate::RunBuilder::new(b).default_alg($alg).run()
}
_ => unreachable!(),
}
}};
}