rsiot/components/cmp_http_server/
error.rs1use std::io::Error as StdIoError;
2
3use axum::{http::StatusCode, response::IntoResponse};
4
5#[allow(missing_docs)]
6#[derive(Debug, thiserror::Error)]
7pub enum Error {
8 #[error(transparent)]
10 AxumServe(StdIoError),
11
12 #[error(transparent)]
14 BindPort(StdIoError),
15
16 #[error("Unknown path: {0}")]
17 UnknownPath(String),
18
19 #[error("Not configured: {0}")]
20 NotConfigured(String),
21
22 #[error(transparent)]
23 Message(#[from] crate::message::Error),
24
25 #[error(transparent)]
26 FnInput(anyhow::Error),
27
28 #[error(transparent)]
29 FnOutput(anyhow::Error),
30
31 #[error(transparent)]
32 CmpOutput(#[from] crate::executor::ComponentError),
33
34 #[error("TaskEndAxumServe")]
35 TaskEndAxumServe,
36
37 #[error("TaskEndCmpPlcInput")]
38 TaskEndCmpPlcInput,
39
40 #[error("TaskEndCmpPlcOutput")]
41 TaskEndCmpPlcOutput,
42
43 #[error("TaskEndCmpPlcStatic")]
44 TaskEndCmpPlcStatic,
45
46 #[error("UpdateGetEndpoints")]
47 TaskUpdateGetEndpoints,
48
49 #[error(transparent)]
50 Serde(#[from] crate::serde_utils::Error),
51}
52
53impl IntoResponse for Error {
55 fn into_response(self) -> axum::response::Response {
56 let body = self.to_string();
57 (StatusCode::INTERNAL_SERVER_ERROR, body).into_response()
58 }
59}