otlp_arrow_library/
error.rs1use thiserror::Error;
7
8#[derive(Error, Debug)]
10pub enum OtlpError {
11 #[error("Configuration error: {0}")]
13 Config(#[from] OtlpConfigError),
14
15 #[error("Export error: {0}")]
17 Export(#[from] OtlpExportError),
18
19 #[error("I/O error: {0}")]
21 Io(#[from] std::io::Error),
22
23 #[error("Server error: {0}")]
25 Server(#[from] OtlpServerError),
26}
27
28#[derive(Error, Debug)]
30pub enum OtlpConfigError {
31 #[error("Invalid output directory: {0}")]
33 InvalidOutputDir(String),
34
35 #[error("Invalid interval: {0}")]
37 InvalidInterval(String),
38
39 #[error("Missing required field: {0}")]
41 MissingRequiredField(String),
42
43 #[error("Invalid URL format: {0}")]
45 InvalidUrl(String),
46
47 #[error("Configuration validation failed: {0}")]
49 ValidationFailed(String),
50}
51
52#[derive(Error, Debug)]
54pub enum OtlpExportError {
55 #[error("Message buffer is full")]
57 BufferFull,
58
59 #[error("Serialization error: {0}")]
61 SerializationError(String),
62
63 #[error("Remote forwarding failed: {0}")]
65 ForwardingError(String),
66
67 #[error("Arrow IPC conversion error: {0}")]
69 ArrowConversionError(String),
70
71 #[error("Cleanup error: {0}")]
73 CleanupError(String),
74
75 #[error("Format conversion error: {0}")]
77 FormatConversionError(String),
78}
79
80#[allow(clippy::enum_variant_names)]
82#[derive(Error, Debug)]
83pub enum OtlpServerError {
84 #[error("Failed to bind server address: {0}")]
86 BindError(String),
87
88 #[error("Failed to start server: {0}")]
90 StartupError(String),
91
92 #[error("Server shutdown error: {0}")]
94 ShutdownError(String),
95}
96
97impl From<anyhow::Error> for OtlpError {
98 fn from(err: anyhow::Error) -> Self {
99 OtlpError::Io(std::io::Error::other(err.to_string()))
100 }
101}