pub const OK: u32 = 0;
pub const CANCELLED: u32 = 1;
pub const UNKNOWN: u32 = 2;
pub const INVALID_ARGUMENT: u32 = 3;
pub const DEADLINE_EXCEEDED: u32 = 4;
pub const NOT_FOUND: u32 = 5;
pub const ALREADY_EXISTS: u32 = 6;
pub const PERMISSION_DENIED: u32 = 7;
pub const RESOURCE_EXHAUSTED: u32 = 8;
pub const FAILED_PRECONDITION: u32 = 9;
pub const ABORTED: u32 = 10;
pub const OUT_OF_RANGE: u32 = 11;
pub const UNIMPLEMENTED: u32 = 12;
pub const INTERNAL: u32 = 13;
pub const UNAVAILABLE: u32 = 14;
pub const DATA_LOSS: u32 = 15;
pub const UNAUTHENTICATED: u32 = 16;
pub fn name(code: u32) -> &'static str {
match code {
OK => "OK",
CANCELLED => "CANCELLED",
UNKNOWN => "UNKNOWN",
INVALID_ARGUMENT => "INVALID_ARGUMENT",
DEADLINE_EXCEEDED => "DEADLINE_EXCEEDED",
NOT_FOUND => "NOT_FOUND",
ALREADY_EXISTS => "ALREADY_EXISTS",
PERMISSION_DENIED => "PERMISSION_DENIED",
RESOURCE_EXHAUSTED => "RESOURCE_EXHAUSTED",
FAILED_PRECONDITION => "FAILED_PRECONDITION",
ABORTED => "ABORTED",
OUT_OF_RANGE => "OUT_OF_RANGE",
UNIMPLEMENTED => "UNIMPLEMENTED",
INTERNAL => "INTERNAL",
UNAVAILABLE => "UNAVAILABLE",
DATA_LOSS => "DATA_LOSS",
UNAUTHENTICATED => "UNAUTHENTICATED",
_ => "UNKNOWN",
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Status {
pub code: u32,
pub message: String,
}
impl Status {
pub fn new(code: u32, message: impl Into<String>) -> Self {
Self {
code,
message: message.into(),
}
}
pub fn name(&self) -> &'static str {
name(self.code)
}
}
impl Default for Status {
fn default() -> Self {
Self {
code: OK,
message: String::new(),
}
}
}