use anyhow::Result;
use sequoia_ipc as ipc;
pub fn run(mut desc: ipc::Descriptor, socket: Option<usize>) -> Result<()> {
if let Some(fd) = socket {
if fd != 0 {
eprintln!("Currently the socket can only be passed on fd 0");
std::process::exit(1);
}
let mut server = ipc::Server::new(desc)?;
server.serve()?;
} else {
let join_handle = desc.bootstrap()?;
if let Some(join_handle) = join_handle {
match join_handle.join() {
Err(err) => panic!("The server thread panicked: {:?}", err),
Ok(Err(err)) => return Err(err),
Ok(Ok(())) => (),
}
}
}
Ok(())
}