ftth_rsipstack/
error.rs

1use crate::{dialog::DialogId, transaction::key::TransactionKey, transport::SipAddr};
2use thiserror::Error as ThisError;
3
4#[derive(Debug, ThisError)]
5pub enum Error {
6    #[error("SIP message error: {0}")]
7    SipMessageError(#[from] rsip::Error),
8
9    #[error("DNS resolution error: {0}")]
10    DnsResolutionError(String),
11
12    #[error("Transport layer error: {0}: {1}")]
13    TransportLayerError(String, SipAddr),
14
15    #[error("Transaction error: {0}: {1}")]
16    TransactionError(String, TransactionKey),
17
18    #[error("Endpoint error: {0}")]
19    EndpointError(String),
20
21    #[error("Dialog error:{2}({0})")]
22    DialogError(String, DialogId, rsip::StatusCode),
23
24    #[error("I/O error: {0}")]
25    IoError(#[from] std::io::Error),
26
27    #[error("Address parse error: {0}")]
28    AddrParseError(#[from] std::net::AddrParseError),
29
30    #[error("Error: {0}")]
31    Error(String),
32}
33
34impl<T> From<tokio::sync::mpsc::error::SendError<T>> for Error {
35    fn from(e: tokio::sync::mpsc::error::SendError<T>) -> Self {
36        Error::Error(e.to_string())
37    }
38}