use crate::source::MetricSourceError;
use crate::source::types::SourceEvent;
use thiserror::Error;
use tokio::{sync::mpsc::error::SendError, task::JoinError};
#[derive(Debug, Error)]
pub enum OrchestratorError {
#[error("Not enough snapshots to retrieve.")]
NotEnoughSnapshots,
#[error("No metric sources configured.")]
NoSourceConfigured,
#[error("Join error")]
JoinError(
#[from]
#[source]
JoinError,
),
#[error("Send error")]
SendError(
#[from]
#[source]
SendError<SourceEvent>,
),
#[error("Cannot initialize {0} source.")]
InitializationError(String),
#[error(transparent)]
MetricSourceError(#[from] MetricSourceError),
}