use thiserror::Error;
use crate::data_usage_define::DataUsageCache;
#[derive(Error, Debug)]
#[non_exhaustive]
pub enum ScannerError {
#[error("Configuration error: {0}")]
Config(String),
#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
#[error("Serialization error: {0}")]
Serialization(#[from] serde_json::Error),
#[error("Scanner error: {0}")]
Other(String),
#[error("Remote namespace scanner request replay detected")]
RemoteRequestReplay,
#[error("Remote namespace scanner replay cache capacity exceeded")]
RemoteReplayCapacity,
#[error("Remote namespace scanner disk is already active")]
RemoteDiskBusy,
#[error("Scanner stopped with partial data usage cache")]
PartialCache(Box<DataUsageCache>),
#[error("Scanner namespace path disappeared during the scan")]
NamespaceNotFoundCache(Box<DataUsageCache>),
}