1use thiserror::Error;
4
5#[derive(Clone, Copy, Debug, Eq, Error, PartialEq)]
10#[non_exhaustive]
11pub enum VapiError {
12 #[error("invalid Vapi configuration: {0}")]
13 InvalidConfiguration(&'static str),
14 #[error("invalid Vapi call options: {0}")]
15 InvalidCallOptions(&'static str),
16 #[error("Vapi HTTP request failed")]
17 Http,
18 #[error("Vapi HTTP request timed out")]
19 HttpTimeout,
20 #[error("Vapi returned HTTP status {0}")]
21 HttpStatus(u16),
22 #[error("Vapi returned an invalid call response: {0}")]
23 InvalidResponse(&'static str),
24 #[error("Vapi WebSocket setup failed")]
25 WebSocketSetup,
26 #[error("Vapi WebSocket I/O failed")]
27 WebSocketIo,
28 #[error("Vapi WebSocket operation timed out")]
29 WebSocketTimeout,
30 #[error("Vapi media queue overflowed")]
31 MediaQueueOverflow,
32 #[error("Vapi control queue is unavailable")]
33 ControlQueueUnavailable,
34 #[error("Vapi control message exceeds the configured size limit")]
35 ControlMessageTooLarge,
36 #[error("Vapi connection is not active")]
37 NotActive,
38}
39
40pub type Result<T> = std::result::Result<T, VapiError>;
41
42impl From<VapiError> for rvoip_core::RvoipError {
43 fn from(error: VapiError) -> Self {
44 rvoip_core::RvoipError::Adapter(error.to_string())
45 }
46}