ftth_rsipstack/
error.rs

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