Skip to main content

platform/error/
base_error.rs

1//! 顶层错误枚举
2//!
3//! 聚合所有子模块的错误类型,提供统一的错误处理接口
4
5use super::{
6    ConfigError, DatabaseError, NetworkError, SerializationError, StorageError, ValidationError,
7};
8use thiserror::Error;
9
10/// 顶层错误枚举,聚合所有子 crate 的错误
11#[derive(Error, Debug)]
12pub enum BaseError {
13    // ========== Identity 管理错误 ==========
14    /// AId Token 相关错误
15    #[error("AId error: {0}")]
16    Aid(#[from] crate::aid::credential::AidError),
17
18    /// Realm 管理错误
19    #[error("Realm error: {0}")]
20    Realm(#[from] crate::realm::RealmError),
21
22    // ========== 服务层错误 ==========
23    /// 身份服务错误
24    #[error("Identity service error: {message}")]
25    IdentityService { message: String },
26
27    /// 信令服务错误
28    #[error("Signaling service error: {message}")]
29    SignalingService { message: String },
30
31    /// 监管服务错误
32    #[error("Admin service error: {message}")]
33    ControlService { message: String },
34
35    /// TURN 服务错误
36    #[error("TURN service error: {message}")]
37    TurnService { message: String },
38
39    /// STUN 服务错误
40    #[error("STUN service error: {message}")]
41    StunService { message: String },
42
43    // ========== 基础设施错误 ==========
44    /// 配置错误
45    #[error("Configuration error: {0}")]
46    Config(#[from] ConfigError),
47
48    /// 网络错误
49    #[error("Network error: {0}")]
50    Network(#[from] NetworkError),
51
52    /// 数据库错误
53    #[error("Database error: {0}")]
54    Database(#[from] DatabaseError),
55
56    /// 存储错误
57    #[error("Storage error: {0}")]
58    Storage(#[from] StorageError),
59
60    // ========== 通用错误 ==========
61    /// IO 错误
62    #[error("IO error: {0}")]
63    Io(#[from] std::io::Error),
64
65    /// 序列化错误
66    #[error("Serialization error: {0}")]
67    Serialization(#[from] SerializationError),
68
69    /// 验证错误
70    #[error("Validation error: {0}")]
71    Validation(#[from] ValidationError),
72
73    /// 通用错误(用于不适合其他类别的错误)
74    #[error("General error: {message}")]
75    General { message: String },
76
77    /// 内部错误(通常表示编程错误)
78    #[error("Internal error: {message}")]
79    Internal { message: String },
80}
81
82impl BaseError {
83    /// 创建通用错误
84    pub fn general(message: impl Into<String>) -> Self {
85        Self::General {
86            message: message.into(),
87        }
88    }
89
90    /// 创建内部错误
91    pub fn internal(message: impl Into<String>) -> Self {
92        Self::Internal {
93            message: message.into(),
94        }
95    }
96
97    /// 创建身份服务错误
98    pub fn identity_service(message: impl Into<String>) -> Self {
99        Self::IdentityService {
100            message: message.into(),
101        }
102    }
103
104    /// 创建信令服务错误
105    pub fn signaling_service(message: impl Into<String>) -> Self {
106        Self::SignalingService {
107            message: message.into(),
108        }
109    }
110
111    /// 创建监管服务错误
112    pub fn control_service(message: impl Into<String>) -> Self {
113        Self::ControlService {
114            message: message.into(),
115        }
116    }
117
118    /// 创建 TURN 服务错误
119    pub fn turn_service(message: impl Into<String>) -> Self {
120        Self::TurnService {
121            message: message.into(),
122        }
123    }
124
125    /// 创建 STUN 服务错误
126    pub fn stun_service(message: impl Into<String>) -> Self {
127        Self::StunService {
128            message: message.into(),
129        }
130    }
131}
132
133/// 统一的 Result 类型
134pub type Result<T> = std::result::Result<T, BaseError>;