42 lines
1.2 KiB
Rust
42 lines
1.2 KiB
Rust
//! df-relay 错误类型
|
|
//!
|
|
//! 设计:单一 RelayError 覆盖服务启动/客户端管理/广播/WS 协议四类失败,
|
|
//! thiserror 派生保留错误链。脚手架阶段仅定义类型。
|
|
|
|
use thiserror::Error;
|
|
|
|
/// 中继服务运行期错误
|
|
#[derive(Debug, Error)]
|
|
pub enum RelayError {
|
|
/// 服务启动失败(端口占用 / 绑定失败)
|
|
#[error("中继服务启动失败: {0}")]
|
|
Start(String),
|
|
|
|
/// 客户端管理错误(配对失败 / 重复连接 / 鉴权拒绝)
|
|
#[error("客户端管理错误: {0}")]
|
|
Client(String),
|
|
|
|
/// 广播失败(无可用连接 / 发送失败)
|
|
#[error("广播失败: {0}")]
|
|
Broadcast(String),
|
|
|
|
/// WS 协议层错误(底层 axum::extract::ws / tungstenite)
|
|
#[error("WS 协议错误: {0}")]
|
|
WebSocket(String),
|
|
|
|
/// 序列化/反序列化失败
|
|
#[error("消息序列化失败: {0}")]
|
|
Serde(#[from] serde_json::Error),
|
|
|
|
/// 广播发送失败(mpsc channel 对端已断开)
|
|
#[error("广播 channel 发送失败: {0}")]
|
|
Channel(String),
|
|
|
|
/// 其他未归类错误(降级通道)
|
|
#[error("中继内部错误: {0}")]
|
|
Other(#[from] anyhow::Error),
|
|
}
|
|
|
|
/// 模块级 Result 别名
|
|
pub type Result<T> = std::result::Result<T, RelayError>;
|