use thiserror::Error;
use super::types::WireVersion;
#[derive(Debug, Error)]
pub enum WireVersionError {
#[error(
"unsupported wire version {peer_version} from peer \
(supported: {supported_min}..={supported_max})"
)]
UnsupportedVersion {
peer_version: WireVersion,
supported_min: WireVersion,
supported_max: WireVersion,
},
#[error("wire decode failure: {0}")]
DecodeFailure(String),
#[error(
"version negotiation failed: local range {local_min}..={local_max} \
does not overlap remote range {remote_min}..={remote_max}"
)]
NegotiationFailed {
local_min: WireVersion,
local_max: WireVersion,
remote_min: WireVersion,
remote_max: WireVersion,
},
}
impl From<WireVersionError> for crate::error::ClusterError {
fn from(e: WireVersionError) -> Self {
crate::error::ClusterError::Codec {
detail: e.to_string(),
}
}
}