1use crate::ProcessKey;
4use std::borrow::Cow;
5use thiserror::Error as ThisError;
6use tokio::sync::oneshot::error::RecvError;
7
8#[derive(Debug, ThisError)]
9pub enum Error {
10 #[error("invalid process {:?}", .0)]
11 InvalidProcess(ProcessKey),
12 #[error("failed to receive return message: {0}")]
13 ReturnMessage(#[from] RecvError),
14 #[error("failed to start process: {0}")]
15 Process(std::io::Error),
16 #[error("process does not exist")]
17 NonExistantProcess,
18 #[error("process manager has been shut down")]
19 Stopped,
20 #[error("failed to send message to process stdin: {0}")]
21 StdinMessage(#[from] tokio::sync::mpsc::error::SendError<Cow<'static, [u8]>>),
22 #[error("recever for stdin messages is missing from process")]
23 MissingStdinReceiver,
24}
25
26pub type Result<T> = std::result::Result<T, Error>;