Skip to main content

rsiot/components/cmp_websocket_server/
errors.rs

1use crate::{components::shared_tasks, executor::ComponentError, serde_utils};
2
3use super::COMPONENT_NAME;
4
5#[allow(missing_docs)]
6#[derive(Debug, thiserror::Error)]
7pub enum Error {
8    #[error("{0}")]
9    Tungstenite(#[from] tokio_tungstenite::tungstenite::Error),
10
11    #[error("Error bind to port: {0}")]
12    BindToPort(std::io::Error),
13
14    #[error("{0}")]
15    TokioTaskJoin(#[from] tokio::task::JoinError),
16
17    #[error("TokioSyncMpsc")]
18    TokioSyncMpsc,
19
20    #[error("{0}")]
21    FnInput(anyhow::Error),
22
23    #[error("Error: {err}, text from client: {data}")]
24    FnOutput { err: anyhow::Error, data: String },
25
26    #[error("{COMPONENT_NAME} | FnProcessEnd")]
27    FnProcessEnd,
28
29    #[error("Client disconnected")]
30    ClientDisconnected,
31
32    #[error(transparent)]
33    CmpOutput(crate::executor::ComponentError),
34
35    #[error("TaskEndInput")]
36    TaskEndInput,
37
38    #[error("TaskEndOutput")]
39    TaskEndOutput,
40
41    #[error(transparent)]
42    SharedTaskMsgBusToMpsc(shared_tasks::msgbus_to_mpsc::Error),
43
44    #[error(transparent)]
45    SharedTaskMpscToMsgBus(shared_tasks::mpsc_to_msgbus::Error),
46
47    #[error(transparent)]
48    Serde(#[from] serde_utils::Error),
49}
50
51impl From<Error> for ComponentError {
52    fn from(value: Error) -> Self {
53        ComponentError::Execution(value.to_string())
54    }
55}