use thiserror::Error;
use crate::{
connection_manager::ConnectionManagerError,
peer_manager::PeerManagerError,
protocol::ProtocolExtensionError,
tor::HiddenServiceControllerError,
};
#[derive(Debug, Error)]
pub enum CommsBuilderError {
#[error("Peer manager error: {0}")]
PeerManagerError(#[from] PeerManagerError),
#[error("Connection manager error: {0}")]
ConnectionManagerError(#[from] ConnectionManagerError),
#[error("Node identity not set. Call `with_node_identity(node_identity)` on [CommsBuilder]")]
NodeIdentityNotSet,
#[error("Shutdown signal not set. Call `with_shutdown_signal(shutdown_signal)` on [CommsBuilder]")]
ShutdownSignalNotSet,
#[error("The PeerStorage was not provided to the CommsBuilder. Use `with_peer_storage` to set it.")]
PeerStorageNotProvided,
#[error("Comms protocol extension failed to install: {0}")]
CommsProtocolExtensionError(#[from] ProtocolExtensionError),
#[error("Failed to initialize tor hidden service: {0}")]
HiddenServiceControllerError(#[from] HiddenServiceControllerError),
}