use super::NetworkError;
use crate::raft::types::ForwardToLeader;
use anyerror::AnyError;
#[derive(thiserror::Error, serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
pub enum APIError {
#[error(transparent)]
ForwardToLeader(#[from] ForwardToLeader),
#[error("can not forward any more: {0}")]
CanNotForward(AnyError),
#[error(transparent)]
NetworkError(#[from] NetworkError),
}
impl APIError {
pub fn is_retryable(&self) -> bool {
match self {
APIError::CanNotForward(_) => {
true
}
APIError::ForwardToLeader(_) => {
true
}
_ => false,
}
}
}