use std::fmt;
#[derive(Debug, PartialEq)]
pub enum MessageErrorDetails {
NoData,
NoPrefix,
NoClient,
FailedPrefixParse,
FailedCommandParse,
FailedParamParse,
NoCommand,
InvalidCommand,
NotEnoughParams,
FailedBuild,
FailedSerialize,
}
impl MessageErrorDetails {
pub fn error_text(&self) -> &str {
match *self {
MessageErrorDetails::NoData => "No data in message",
MessageErrorDetails::NoClient => "No client identifier",
MessageErrorDetails::NoPrefix => "Missing : character",
MessageErrorDetails::FailedPrefixParse => "Failed to parse prefix data",
MessageErrorDetails::InvalidCommand => "Invalid command",
MessageErrorDetails::NoCommand => "No command provided",
MessageErrorDetails::FailedCommandParse => "Failed to parse command data",
MessageErrorDetails::FailedParamParse => "Failed to parse param data",
MessageErrorDetails::NotEnoughParams => "Not enough params for command",
MessageErrorDetails::FailedBuild => "Failed to build Message, unknown error",
MessageErrorDetails::FailedSerialize => "Failed to serialize message, unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub struct MessageError {
pub detail: MessageErrorDetails,
}
impl fmt::Display for MessageError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "MessageError {}", self.detail.error_text())
}
}