#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
pub enum OversizedTransferError {
#[error("Transfer aborted (token: {token}){}", .reason.as_deref().map(|r| format!(": {r}")).unwrap_or_default())]
Abort {
token: String,
reason: Option<String>,
},
#[error("Oversized transfer policy violation: {0}")]
Policy(String),
#[error("Oversized transfer integrity error: {0}")]
Digest(String),
#[error("Oversized transfer reassembly error: {0}")]
Reassembly(String),
#[error("Oversized transfer sequence error: {0}")]
Sequence(String),
}
impl OversizedTransferError {
pub fn abort(token: impl Into<String>, reason: Option<String>) -> Self {
Self::Abort {
token: token.into(),
reason,
}
}
pub fn is_abort(&self) -> bool {
matches!(self, Self::Abort { .. })
}
}