#![allow(clippy::derive_partial_eq_without_eq)]
pub mod blockchain {
tonic::include_proto!("blockchain");
}
pub mod common {
tonic::include_proto!("common");
}
pub mod consensus {
tonic::include_proto!("consensus");
}
pub mod controller {
tonic::include_proto!("controller");
}
pub mod executor {
tonic::include_proto!("executor");
}
pub mod crypto {
tonic::include_proto!("crypto");
}
pub mod network {
tonic::include_proto!("network");
}
pub mod storage {
tonic::include_proto!("storage");
}
pub mod evm {
tonic::include_proto!("evm");
}
pub mod health_check {
tonic::include_proto!("grpc.health.v1");
}
pub mod status_code {
tonic::include_proto!("status_code");
}
pub mod client;
pub mod retry;
use crate::common::StatusCode;
use crate::status_code::StatusCodeEnum;
impl StatusCodeEnum {
pub fn is_success(&self) -> Result<(), StatusCodeEnum> {
if self != &StatusCodeEnum::Success {
Err(*self)
} else {
Ok(())
}
}
}
impl ::std::fmt::Display for StatusCodeEnum {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
write!(f, "{:?}", self)
}
}
impl ::std::error::Error for StatusCodeEnum {}
impl From<StatusCode> for StatusCodeEnum {
fn from(status: StatusCode) -> Self {
StatusCodeEnum::from_i32(status.code as i32)
.ok_or(StatusCodeEnum::NoneStatusCode)
.unwrap()
}
}
#[allow(clippy::from_over_into)]
impl Into<StatusCode> for StatusCodeEnum {
fn into(self) -> StatusCode {
StatusCode { code: self as u32 }
}
}
impl From<u32> for StatusCodeEnum {
fn from(status: u32) -> Self {
StatusCodeEnum::from_i32(status as i32)
.ok_or(StatusCodeEnum::NoneStatusCode)
.unwrap()
}
}
#[cfg(test)]
mod tests {
use crate::status_code::StatusCodeEnum;
#[test]
fn it_works() {
println!("{:?}", StatusCodeEnum::LoadError);
assert_eq!(606, StatusCodeEnum::LoadError as u32);
assert_eq!(StatusCodeEnum::LoadError, StatusCodeEnum::from(606));
let status = crate::common::StatusCode { code: 0 };
let s = StatusCodeEnum::from(status);
assert_eq!(StatusCodeEnum::Success, s);
}
}