wavecraft_bridge/
error.rs1use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum BridgeError {
8 #[error("Failed to parse JSON: {0}")]
10 JsonParse(#[from] serde_json::Error),
11
12 #[error("Parameter not found: {0}")]
14 ParameterNotFound(String),
15
16 #[error("Parameter value out of range: {id} = {value}")]
18 ParameterOutOfRange { id: String, value: f32 },
19
20 #[error("Unknown method: {0}")]
22 UnknownMethod(String),
23
24 #[error("Invalid params for method {method}: {reason}")]
26 InvalidParams { method: String, reason: String },
27
28 #[error("Internal bridge error: {0}")]
30 Internal(String),
31}
32
33impl BridgeError {
34 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}