use rskit_errors::AppError;
pub trait ErrorClassifier: Send + Sync {
fn is_connection_error(&self, err: &AppError) -> bool;
fn is_retryable_error(&self, err: &AppError) -> bool;
}
#[derive(Debug, Clone, Copy, Default)]
pub struct NoopErrorClassifier;
impl ErrorClassifier for NoopErrorClassifier {
fn is_connection_error(&self, _err: &AppError) -> bool {
false
}
fn is_retryable_error(&self, _err: &AppError) -> bool {
false
}
}
#[cfg(test)]
mod tests {
use rskit_errors::{AppError, ErrorCode};
use super::*;
#[test]
fn noop_classifier_returns_false() {
let classifier = NoopErrorClassifier;
let err = AppError::new(ErrorCode::Internal, "something broke");
assert!(!classifier.is_connection_error(&err));
assert!(!classifier.is_retryable_error(&err));
}
}