Skip to main content

wavecraft_bridge/
error.rs

1//! Error types for the IPC bridge layer
2
3use thiserror::Error;
4
5/// Bridge-specific errors that occur during IPC handling
6#[derive(Debug, Error)]
7pub enum BridgeError {
8    /// JSON parsing failed
9    #[error("Failed to parse JSON: {0}")]
10    JsonParse(#[from] serde_json::Error),
11
12    /// Parameter not found in host
13    #[error("Parameter not found: {0}")]
14    ParameterNotFound(String),
15
16    /// Parameter value out of valid range
17    #[error("Parameter value out of range: {id} = {value}")]
18    ParameterOutOfRange { id: String, value: f32 },
19
20    /// Method not supported by handler
21    #[error("Unknown method: {0}")]
22    UnknownMethod(String),
23
24    /// Invalid parameters for method
25    #[error("Invalid params for method {method}: {reason}")]
26    InvalidParams { method: String, reason: String },
27
28    /// Internal error in bridge logic
29    #[error("Internal bridge error: {0}")]
30    Internal(String),
31}
32
33impl BridgeError {
34    /// Convert BridgeError to IpcError from protocol
35    pub fn to_ipc_error(&self) -> wavecraft_protocol::IpcError {
36        match self {
37            BridgeError::JsonParse(_) => wavecraft_protocol::IpcError::parse_error(),
38            BridgeError::ParameterNotFound(id) => wavecraft_protocol::IpcError::param_not_found(id),
39            BridgeError::ParameterOutOfRange { id, value } => {
40                wavecraft_protocol::IpcError::param_out_of_range(id, *value)
41            }
42            BridgeError::UnknownMethod(method) => {
43                wavecraft_protocol::IpcError::method_not_found(method)
44            }
45            BridgeError::InvalidParams { reason, .. } => {
46                wavecraft_protocol::IpcError::invalid_params(reason)
47            }
48            BridgeError::Internal(reason) => wavecraft_protocol::IpcError::internal_error(reason),
49        }
50    }
51}