Skip to main content

chord_dht/core/
error.rs

1use thiserror::Error;
2use std::result::Result;
3use super::{ring::Digest, Node};
4
5#[derive(Error, Debug)]
6pub enum DhtError {
7	#[error("No live replica for key digest {0}")]
8	NoLiveReplica(Digest),
9	#[error("Fail to join node {node}: {message}")]
10	JoinFailure {
11		node: Node,
12		message: String
13	},
14	#[error("Server error")]
15	ServerError(#[from] tokio::task::JoinError),
16	#[error("ServerManager error")]
17	ServerManagerError(#[from] tokio::sync::watch::error::SendError<bool>),
18	#[error("RPC error")]
19	RpcError(#[from] tarpc::client::RpcError),
20	#[error("IO error")]
21	IoError(#[from] std::io::Error)
22}
23
24pub type DhtResult<T> = Result<T, DhtError>;