#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ErrorMetadata {
#[prost(uint64, optional, tag = "1")]
pub retry_after_ms: ::core::option::Option<u64>,
#[prost(string, optional, tag = "2")]
pub leader_id: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "3")]
pub leader_address: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "15")]
pub debug_message: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ErrorCode {
Success = 0,
ConnectionTimeout = 1001,
InvalidAddress = 1002,
LeaderChanged = 1003,
JoinError = 1004,
InvalidResponse = 2001,
VersionMismatch = 2002,
DiskFull = 3001,
DataCorruption = 3002,
StorageIoError = 3003,
StoragePermissionDenied = 3004,
KeyNotExist = 3005,
NotLeader = 4001,
StaleOperation = 4002,
InvalidRequest = 4003,
RateLimited = 4004,
ClusterUnavailable = 4005,
ProposeFailed = 4006,
TermOutdated = 4007,
RetryRequired = 4008,
General = 8888,
Uncategorized = 9999,
}
impl ErrorCode {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Success => "SUCCESS",
Self::ConnectionTimeout => "CONNECTION_TIMEOUT",
Self::InvalidAddress => "INVALID_ADDRESS",
Self::LeaderChanged => "LEADER_CHANGED",
Self::JoinError => "JOIN_ERROR",
Self::InvalidResponse => "INVALID_RESPONSE",
Self::VersionMismatch => "VERSION_MISMATCH",
Self::DiskFull => "DISK_FULL",
Self::DataCorruption => "DATA_CORRUPTION",
Self::StorageIoError => "STORAGE_IO_ERROR",
Self::StoragePermissionDenied => "STORAGE_PERMISSION_DENIED",
Self::KeyNotExist => "KEY_NOT_EXIST",
Self::NotLeader => "NOT_LEADER",
Self::StaleOperation => "STALE_OPERATION",
Self::InvalidRequest => "INVALID_REQUEST",
Self::RateLimited => "RATE_LIMITED",
Self::ClusterUnavailable => "CLUSTER_UNAVAILABLE",
Self::ProposeFailed => "PROPOSE_FAILED",
Self::TermOutdated => "TERM_OUTDATED",
Self::RetryRequired => "RETRY_REQUIRED",
Self::General => "GENERAL",
Self::Uncategorized => "UNCATEGORIZED",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"SUCCESS" => Some(Self::Success),
"CONNECTION_TIMEOUT" => Some(Self::ConnectionTimeout),
"INVALID_ADDRESS" => Some(Self::InvalidAddress),
"LEADER_CHANGED" => Some(Self::LeaderChanged),
"JOIN_ERROR" => Some(Self::JoinError),
"INVALID_RESPONSE" => Some(Self::InvalidResponse),
"VERSION_MISMATCH" => Some(Self::VersionMismatch),
"DISK_FULL" => Some(Self::DiskFull),
"DATA_CORRUPTION" => Some(Self::DataCorruption),
"STORAGE_IO_ERROR" => Some(Self::StorageIoError),
"STORAGE_PERMISSION_DENIED" => Some(Self::StoragePermissionDenied),
"KEY_NOT_EXIST" => Some(Self::KeyNotExist),
"NOT_LEADER" => Some(Self::NotLeader),
"STALE_OPERATION" => Some(Self::StaleOperation),
"INVALID_REQUEST" => Some(Self::InvalidRequest),
"RATE_LIMITED" => Some(Self::RateLimited),
"CLUSTER_UNAVAILABLE" => Some(Self::ClusterUnavailable),
"PROPOSE_FAILED" => Some(Self::ProposeFailed),
"TERM_OUTDATED" => Some(Self::TermOutdated),
"RETRY_REQUIRED" => Some(Self::RetryRequired),
"GENERAL" => Some(Self::General),
"UNCATEGORIZED" => Some(Self::Uncategorized),
_ => None,
}
}
}