diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..8162342 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,75 @@ +# CITA Cloud Common Rust (cloud-common-rs) + +## Project Information +- **Name**: cloud-common-rs +- **Description**: Common Rust utilities and protocol definitions for CITA Cloud ecosystem. +- **Repository**: [cloud-common-rs](https://github.com/cita-cloud/cloud-common-rs) + +## Core Components + +### 1. cloud-proto +Contains gRPC protocol definitions and generated Rust code for CITA Cloud microservices. +- **Services**: Blockchain, Consensus, Controller, Crypto, Executor, Network, Storage. +- **Tools**: Includes `client` module for easy service connection. + +### 2. cloud-util +Provides common utilities for building CITA Cloud components. +- **Tracing**: Distributed tracing with OpenTelemetry (v0.31) and Jaeger/OTLP support. +- **Metrics**: Prometheus metrics collection via `axum`. +- **Cryptography**: Common crypto traits and implementations. +- **Signal Handling**: Graceful shutdown support. +- **Storage**: Storage traits abstraction. + +## Dependencies +- **Rust Toolchain**: 1.85+ (2024 edition). +- **Protobuf Compiler**: `protoc` (required for building `cloud-proto`). +- **OpenSSL**: `openssl-sys` dependency. + +## Usage + +### Updating Protocols +Initialize and update git submodules for proto files: +```bash +sh update_proto.sh +``` + +### Building +Build the project in release mode: +```bash +cargo build --release --all --all-features +``` + +### Using Tracing (Example) +```rust +use cloud_util::tracer::{init_tracer, LogConfig}; + +fn main() -> Result<(), Box> { + let config = LogConfig { + service_name: "my-service".to_string(), + agent_endpoint: Some("grpc://localhost:4317".to_string()), // OTLP endpoint + ..Default::default() + }; + + // Initialize tracer + init_tracer("my-domain".to_string(), &config)?; + + // ... application logic ... + + Ok(()) +} +``` + +### Using gRPC Client (Example) +```rust +use cloud_proto::client::ClientOptions; + +async fn connect() { + let opts = ClientOptions::new( + "client-name".to_string(), + "http://localhost:50004".to_string() + ); + + let controller = opts.connect_controller(); + // ... +} +``` diff --git a/Cargo.toml b/Cargo.toml index 7997b7b..b58cbff 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -resolver = "2" +resolver = "3" members = [ "cloud-proto", "cloud-util" diff --git a/cloud-proto/Cargo.toml b/cloud-proto/Cargo.toml index a57a632..280a16c 100644 --- a/cloud-proto/Cargo.toml +++ b/cloud-proto/Cargo.toml @@ -1,25 +1,29 @@ [package] name = "cita_cloud_proto" -version = "6.7.4" +version = "6.7.5" authors = ["Rivtower Technologies "] -edition = "2021" +edition = "2024" license = "Apache-2.0" description = "cita-cloud proto library" [dependencies] -tonic = "0.12" -prost = "0.13" -tokio = { version = "1.41", default-features = false, features = ["macros"] } +tonic = "0.14" +prost = "0.14" +tonic-prost = "0.14" +tokio = { version = "1.49", default-features = false, features = ["macros"] } thiserror = "2.0" -http = "1.1" +http = "1.4" futures-retry = "0.6" backoff = "0.4" async-trait = "0.1" serde = { version = "1.0", default-features = false, features = ["derive"] } tracing = "0.1" -tracing-opentelemetry = "0.27" -opentelemetry = "0.26" +tracing-opentelemetry = "0.32" +opentelemetry = "0.31" + +[features] +tonic-build = ["dep:tonic-prost-build"] [build-dependencies] -tonic-build = { version = "0.12", optional = true } +tonic-prost-build = { version = "0.14", optional = true } diff --git a/cloud-proto/build.rs b/cloud-proto/build.rs index 24a786f..40dce13 100644 --- a/cloud-proto/build.rs +++ b/cloud-proto/build.rs @@ -13,10 +13,10 @@ // limitations under the License. fn main() -> Result<(), Box> { + println!("cargo:rerun-if-changed=protos"); #[cfg(feature = "tonic-build")] { - println!("cargo:rerun-if-changed=protos"); - tonic_build::configure() + tonic_prost_build::configure() .out_dir("src/proto") .type_attribute(".", "#[derive(serde::Serialize, serde::Deserialize)]") .compile_protos( @@ -32,12 +32,12 @@ fn main() -> Result<(), Box> { ], &["protos/protos"], )?; - tonic_build::configure() + tonic_prost_build::configure() .out_dir("src/proto") .type_attribute(".", "#[derive(serde::Serialize, serde::Deserialize)]") .file_descriptor_set_path("src/reflect/controller.bin") .compile_protos(&["controller.proto"], &["protos/protos"])?; - tonic_build::configure() + tonic_prost_build::configure() .out_dir("src/proto") .type_attribute(".", "#[derive(serde::Serialize, serde::Deserialize)]") .file_descriptor_set_path("src/reflect/executor.bin") diff --git a/cloud-proto/src/client.rs b/cloud-proto/src/client.rs index 929b610..600ceed 100755 --- a/cloud-proto/src/client.rs +++ b/cloud-proto/src/client.rs @@ -29,8 +29,8 @@ use http::uri::InvalidUri; use opentelemetry::{global, propagation::Injector}; use std::time::{Duration, Instant}; use tonic::{ - codegen::InterceptedService, metadata::MetadataValue, service::Interceptor, transport::Channel, - Request, Status, + Request, Status, codegen::InterceptedService, metadata::MetadataValue, service::Interceptor, + transport::Channel, }; use tracing_opentelemetry::OpenTelemetrySpanExt; @@ -414,7 +414,7 @@ pub trait ControllerClientTrait { #[async_trait::async_trait] pub trait NetworkClientTrait { async fn send_msg(&self, msg: network::NetworkMsg) - -> Result; + -> Result; async fn broadcast( &self, @@ -520,10 +520,10 @@ struct MutMetadataMap<'a>(&'a mut tonic::metadata::MetadataMap); impl<'a> Injector for MutMetadataMap<'a> { /// Set a key and value in the MetadataMap. Does nothing if the key or value are not valid inputs fn set(&mut self, key: &str, value: String) { - if let Ok(key) = tonic::metadata::MetadataKey::from_bytes(key.as_bytes()) { - if let Ok(val) = std::str::FromStr::from_str(&value) { - self.0.insert(key, val); - } + if let Ok(key) = tonic::metadata::MetadataKey::from_bytes(key.as_bytes()) + && let Ok(val) = std::str::FromStr::from_str(&value) + { + self.0.insert(key, val); } } } diff --git a/cloud-proto/src/proto/blockchain.rs b/cloud-proto/src/proto/blockchain.rs index 4d92854..83f291e 100644 --- a/cloud-proto/src/proto/blockchain.rs +++ b/cloud-proto/src/proto/blockchain.rs @@ -1,5 +1,5 @@ // This file is @generated by prost-build. -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct BlockHeader { /// hash of previous BlockHeader #[prost(bytes = "vec", tag = "1")] @@ -13,12 +13,12 @@ pub struct BlockHeader { #[prost(bytes = "vec", tag = "5")] pub proposer: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct Transaction { #[prost(uint32, tag = "1")] pub version: u32, /// 1. length is 20 bytes for evm. - /// 2. if executor is multi-vm, it will be a path. + /// 1. if executor is multi-vm, it will be a path. #[prost(bytes = "vec", tag = "2")] pub to: ::prost::alloc::vec::Vec, /// length is less than 128 @@ -37,7 +37,7 @@ pub struct Transaction { #[prost(bytes = "vec", tag = "8")] pub chain_id: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct Witness { #[prost(bytes = "vec", tag = "1")] pub signature: ::prost::alloc::vec::Vec, @@ -45,7 +45,7 @@ pub struct Witness { #[prost(bytes = "vec", tag = "2")] pub sender: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct UnverifiedTransaction { #[prost(message, optional, tag = "1")] pub transaction: ::core::option::Option, @@ -55,7 +55,7 @@ pub struct UnverifiedTransaction { #[prost(message, optional, tag = "3")] pub witness: ::core::option::Option, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct UtxoTransaction { #[prost(uint32, tag = "1")] pub version: u32, @@ -96,13 +96,13 @@ pub mod raw_transaction { UtxoTx(super::UnverifiedUtxoTransaction), } } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct CompactBlockBody { /// transaction hash of UnverifiedTransaction or UnverifyedUtxoTransaction. #[prost(bytes = "vec", repeated, tag = "1")] pub tx_hashes: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec>, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct CompactBlock { #[prost(uint32, tag = "1")] pub version: u32, diff --git a/cloud-proto/src/proto/common.rs b/cloud-proto/src/proto/common.rs index f7570a5..1e869cd 100644 --- a/cloud-proto/src/proto/common.rs +++ b/cloud-proto/src/proto/common.rs @@ -1,17 +1,19 @@ // This file is @generated by prost-build. -#[derive(serde::Serialize, serde::Deserialize, Clone, Copy, PartialEq, ::prost::Message)] +#[derive( + serde::Serialize, serde::Deserialize, Clone, Copy, PartialEq, Eq, Hash, ::prost::Message, +)] pub struct Empty {} -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct Hash { #[prost(bytes = "vec", tag = "1")] pub hash: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct StateRoot { #[prost(bytes = "vec", tag = "1")] pub state_root: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct Proof { #[prost(bytes = "vec", tag = "1")] pub proof: ::prost::alloc::vec::Vec, @@ -21,33 +23,33 @@ pub struct Hashes { #[prost(message, repeated, tag = "1")] pub hashes: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct Address { #[prost(bytes = "vec", tag = "1")] pub address: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct Proposal { #[prost(uint64, tag = "1")] pub height: u64, #[prost(bytes = "vec", tag = "2")] pub data: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct ProposalInner { #[prost(bytes = "vec", tag = "1")] pub pre_state_root: ::prost::alloc::vec::Vec, #[prost(message, optional, tag = "2")] pub proposal: ::core::option::Option, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct ProposalWithProof { #[prost(message, optional, tag = "1")] pub proposal: ::core::option::Option, #[prost(bytes = "vec", tag = "2")] pub proof: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct ConsensusConfiguration { #[prost(uint64, tag = "1")] pub height: u64, @@ -56,33 +58,35 @@ pub struct ConsensusConfiguration { #[prost(bytes = "vec", repeated, tag = "3")] pub validators: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec>, } -#[derive(serde::Serialize, serde::Deserialize, Clone, Copy, PartialEq, ::prost::Message)] +#[derive( + serde::Serialize, serde::Deserialize, Clone, Copy, PartialEq, Eq, Hash, ::prost::Message, +)] pub struct StatusCode { #[prost(uint32, tag = "1")] pub code: u32, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct HashResponse { #[prost(message, optional, tag = "1")] pub status: ::core::option::Option, #[prost(message, optional, tag = "2")] pub hash: ::core::option::Option, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct ProposalResponse { #[prost(message, optional, tag = "1")] pub status: ::core::option::Option, #[prost(message, optional, tag = "2")] pub proposal: ::core::option::Option, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct ConsensusConfigurationResponse { #[prost(message, optional, tag = "1")] pub status: ::core::option::Option, #[prost(message, optional, tag = "2")] pub config: ::core::option::Option, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct NodeNetInfo { #[prost(string, tag = "1")] pub multi_address: ::prost::alloc::string::String, @@ -94,7 +98,7 @@ pub struct TotalNodeNetInfo { #[prost(message, repeated, tag = "1")] pub nodes: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct PeerStatus { #[prost(uint64, tag = "1")] pub height: u64, diff --git a/cloud-proto/src/proto/consensus.rs b/cloud-proto/src/proto/consensus.rs index 65f22b3..61bc3df 100644 --- a/cloud-proto/src/proto/consensus.rs +++ b/cloud-proto/src/proto/consensus.rs @@ -27,7 +27,7 @@ pub mod consensus_service_client { } impl ConsensusServiceClient where - T: tonic::client::GrpcService, + T: tonic::client::GrpcService, T::Error: Into, T::ResponseBody: Body + std::marker::Send + 'static, ::Error: Into + std::marker::Send, @@ -48,12 +48,12 @@ pub mod consensus_service_client { F: tonic::service::Interceptor, T::ResponseBody: Default, T: tonic::codegen::Service< - http::Request, - Response = http::Response< - >::ResponseBody, + http::Request, + Response = http::Response< + >::ResponseBody, + >, >, - >, - >>::Error: + >>::Error: Into + std::marker::Send + std::marker::Sync, { ConsensusServiceClient::new(InterceptedService::new(inner, interceptor)) @@ -98,7 +98,7 @@ pub mod consensus_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/consensus.ConsensusService/Reconfigure"); let mut req = request.into_request(); @@ -115,7 +115,7 @@ pub mod consensus_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/consensus.ConsensusService/CheckBlock"); let mut req = request.into_request(); @@ -211,7 +211,7 @@ pub mod consensus_service_server { B: Body + std::marker::Send + 'static, B::Error: Into + std::marker::Send + 'static, { - type Response = http::Response; + type Response = http::Response; type Error = std::convert::Infallible; type Future = BoxFuture; fn poll_ready( @@ -249,7 +249,7 @@ pub mod consensus_service_server { let inner = self.inner.clone(); let fut = async move { let method = ReconfigureSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -291,7 +291,7 @@ pub mod consensus_service_server { let inner = self.inner.clone(); let fut = async move { let method = CheckBlockSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -307,7 +307,7 @@ pub mod consensus_service_server { Box::pin(fut) } _ => Box::pin(async move { - let mut response = http::Response::new(empty_body()); + let mut response = http::Response::new(tonic::body::Body::default()); let headers = response.headers_mut(); headers.insert( tonic::Status::GRPC_STATUS, diff --git a/cloud-proto/src/proto/controller.rs b/cloud-proto/src/proto/controller.rs index b91a06d..f4cbb11 100644 --- a/cloud-proto/src/proto/controller.rs +++ b/cloud-proto/src/proto/controller.rs @@ -1,15 +1,19 @@ // This file is @generated by prost-build. -#[derive(serde::Serialize, serde::Deserialize, Clone, Copy, PartialEq, ::prost::Message)] +#[derive( + serde::Serialize, serde::Deserialize, Clone, Copy, PartialEq, Eq, Hash, ::prost::Message, +)] pub struct Flag { #[prost(bool, tag = "1")] pub flag: bool, } -#[derive(serde::Serialize, serde::Deserialize, Clone, Copy, PartialEq, ::prost::Message)] +#[derive( + serde::Serialize, serde::Deserialize, Clone, Copy, PartialEq, Eq, Hash, ::prost::Message, +)] pub struct BlockNumber { #[prost(uint64, tag = "1")] pub block_number: u64, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct SystemConfig { #[prost(uint32, tag = "1")] pub version: u32, @@ -44,12 +48,14 @@ pub struct SystemConfig { #[prost(bytes = "vec", tag = "16")] pub block_limit_pre_hash: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, Copy, PartialEq, ::prost::Message)] +#[derive( + serde::Serialize, serde::Deserialize, Clone, Copy, PartialEq, Eq, Hash, ::prost::Message, +)] pub struct TransactionIndex { #[prost(uint64, tag = "1")] pub tx_index: u64, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct CrossChainProof { #[prost(uint32, tag = "1")] pub version: u32, @@ -92,7 +98,7 @@ pub mod rpc_service_client { } impl RpcServiceClient where - T: tonic::client::GrpcService, + T: tonic::client::GrpcService, T::Error: Into, T::ResponseBody: Body + std::marker::Send + 'static, ::Error: Into + std::marker::Send, @@ -113,12 +119,12 @@ pub mod rpc_service_client { F: tonic::service::Interceptor, T::ResponseBody: Default, T: tonic::codegen::Service< - http::Request, - Response = http::Response< - >::ResponseBody, + http::Request, + Response = http::Response< + >::ResponseBody, + >, >, - >, - >>::Error: + >>::Error: Into + std::marker::Send + std::marker::Sync, { RpcServiceClient::new(InterceptedService::new(inner, interceptor)) @@ -163,7 +169,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/controller.RPCService/GetBlockNumber"); let mut req = request.into_request(); @@ -179,7 +185,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/controller.RPCService/SendRawTransaction"); let mut req = request.into_request(); @@ -197,7 +203,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/controller.RPCService/SendRawTransactions"); let mut req = request.into_request(); @@ -217,7 +223,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/controller.RPCService/GetBlockByHash"); let mut req = request.into_request(); @@ -232,7 +238,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/controller.RPCService/GetHeightByHash"); let mut req = request.into_request(); @@ -250,7 +256,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/controller.RPCService/GetBlockByNumber"); let mut req = request.into_request(); @@ -266,7 +272,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/controller.RPCService/GetStateRootByNumber"); let mut req = request.into_request(); @@ -284,7 +290,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/controller.RPCService/GetProofByNumber"); let mut req = request.into_request(); @@ -300,7 +306,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/controller.RPCService/GetBlockDetailByNumber", ); @@ -321,7 +327,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/controller.RPCService/GetTransaction"); let mut req = request.into_request(); @@ -336,7 +342,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/controller.RPCService/GetSystemConfig"); let mut req = request.into_request(); @@ -351,7 +357,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/controller.RPCService/GetSystemConfigByNumber", ); @@ -370,7 +376,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/controller.RPCService/GetBlockHash"); let mut req = request.into_request(); req.extensions_mut() @@ -384,7 +390,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/controller.RPCService/GetTransactionBlockNumber", ); @@ -402,7 +408,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/controller.RPCService/GetTransactionIndex"); let mut req = request.into_request(); @@ -421,7 +427,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/controller.RPCService/AddNode"); let mut req = request.into_request(); req.extensions_mut() @@ -436,7 +442,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/controller.RPCService/GetNodeStatus"); let mut req = request.into_request(); req.extensions_mut() @@ -450,7 +456,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/controller.RPCService/GetCrossChainProof"); let mut req = request.into_request(); @@ -462,165 +468,6 @@ pub mod rpc_service_client { } } } -/// Generated client implementations. -pub mod consensus2_controller_service_client { - #![allow( - unused_variables, - dead_code, - missing_docs, - clippy::wildcard_imports, - clippy::let_unit_value - )] - use tonic::codegen::http::Uri; - use tonic::codegen::*; - #[derive(Debug, Clone)] - pub struct Consensus2ControllerServiceClient { - inner: tonic::client::Grpc, - } - impl Consensus2ControllerServiceClient { - /// Attempt to create a new client by connecting to a given endpoint. - pub async fn connect(dst: D) -> Result - where - D: TryInto, - D::Error: Into, - { - let conn = tonic::transport::Endpoint::new(dst)?.connect().await?; - Ok(Self::new(conn)) - } - } - impl Consensus2ControllerServiceClient - where - T: tonic::client::GrpcService, - T::Error: Into, - T::ResponseBody: Body + std::marker::Send + 'static, - ::Error: Into + std::marker::Send, - { - pub fn new(inner: T) -> Self { - let inner = tonic::client::Grpc::new(inner); - Self { inner } - } - pub fn with_origin(inner: T, origin: Uri) -> Self { - let inner = tonic::client::Grpc::with_origin(inner, origin); - Self { inner } - } - pub fn with_interceptor( - inner: T, - interceptor: F, - ) -> Consensus2ControllerServiceClient> - where - F: tonic::service::Interceptor, - T::ResponseBody: Default, - T: tonic::codegen::Service< - http::Request, - Response = http::Response< - >::ResponseBody, - >, - >, - >>::Error: - Into + std::marker::Send + std::marker::Sync, - { - Consensus2ControllerServiceClient::new(InterceptedService::new(inner, interceptor)) - } - /// Compress requests with the given encoding. - /// - /// This requires the server to support it otherwise it might respond with an - /// error. - #[must_use] - pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self { - self.inner = self.inner.send_compressed(encoding); - self - } - /// Enable decompressing responses. - #[must_use] - pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self { - self.inner = self.inner.accept_compressed(encoding); - self - } - /// Limits the maximum size of a decoded message. - /// - /// Default: `4MB` - #[must_use] - pub fn max_decoding_message_size(mut self, limit: usize) -> Self { - self.inner = self.inner.max_decoding_message_size(limit); - self - } - /// Limits the maximum size of an encoded message. - /// - /// Default: `usize::MAX` - #[must_use] - pub fn max_encoding_message_size(mut self, limit: usize) -> Self { - self.inner = self.inner.max_encoding_message_size(limit); - self - } - /// Consensus request a Proposal to start consensus - /// ret: proposal - pub async fn get_proposal( - &mut self, - request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner.ready().await.map_err(|e| { - tonic::Status::unknown(format!("Service was not ready: {}", e.into())) - })?; - let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/controller.Consensus2ControllerService/GetProposal", - ); - let mut req = request.into_request(); - req.extensions_mut().insert(GrpcMethod::new( - "controller.Consensus2ControllerService", - "GetProposal", - )); - self.inner.unary(req, path, codec).await - } - /// when Consensus received a new proposal from other nodes, it will ask controller to check it - /// args: proposal hash - /// ret: ok or not - pub async fn check_proposal( - &mut self, - request: impl tonic::IntoRequest, - ) -> std::result::Result, tonic::Status> - { - self.inner.ready().await.map_err(|e| { - tonic::Status::unknown(format!("Service was not ready: {}", e.into())) - })?; - let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/controller.Consensus2ControllerService/CheckProposal", - ); - let mut req = request.into_request(); - req.extensions_mut().insert(GrpcMethod::new( - "controller.Consensus2ControllerService", - "CheckProposal", - )); - self.inner.unary(req, path, codec).await - } - /// after Consensus, tell controller a proposal has committed - pub async fn commit_block( - &mut self, - request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner.ready().await.map_err(|e| { - tonic::Status::unknown(format!("Service was not ready: {}", e.into())) - })?; - let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/controller.Consensus2ControllerService/CommitBlock", - ); - let mut req = request.into_request(); - req.extensions_mut().insert(GrpcMethod::new( - "controller.Consensus2ControllerService", - "CommitBlock", - )); - self.inner.unary(req, path, codec).await - } - } -} /// Generated server implementations. pub mod rpc_service_server { #![allow( @@ -781,7 +628,7 @@ pub mod rpc_service_server { B: Body + std::marker::Send + 'static, B::Error: Into + std::marker::Send + 'static, { - type Response = http::Response; + type Response = http::Response; type Error = std::convert::Infallible; type Future = BoxFuture; fn poll_ready( @@ -813,7 +660,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetBlockNumberSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -855,7 +702,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = SendRawTransactionSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -897,7 +744,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = SendRawTransactionsSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -938,7 +785,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetBlockByHashSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -979,7 +826,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetHeightByHashSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -1018,7 +865,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetBlockByNumberSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -1057,7 +904,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetStateRootByNumberSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -1096,7 +943,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetProofByNumberSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -1137,7 +984,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetBlockDetailByNumberSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -1178,7 +1025,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetTransactionSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -1219,7 +1066,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetSystemConfigSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -1261,7 +1108,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetSystemConfigByNumberSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -1300,7 +1147,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetBlockHashSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -1342,7 +1189,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetTransactionBlockNumberSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -1383,7 +1230,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetTransactionIndexSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -1424,7 +1271,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = AddNodeSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -1465,7 +1312,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetNodeStatusSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -1506,7 +1353,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetCrossChainProofSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -1522,7 +1369,7 @@ pub mod rpc_service_server { Box::pin(fut) } _ => Box::pin(async move { - let mut response = http::Response::new(empty_body()); + let mut response = http::Response::new(tonic::body::Body::default()); let headers = response.headers_mut(); headers.insert( tonic::Status::GRPC_STATUS, @@ -1555,6 +1402,165 @@ pub mod rpc_service_server { const NAME: &'static str = SERVICE_NAME; } } +/// Generated client implementations. +pub mod consensus2_controller_service_client { + #![allow( + unused_variables, + dead_code, + missing_docs, + clippy::wildcard_imports, + clippy::let_unit_value + )] + use tonic::codegen::http::Uri; + use tonic::codegen::*; + #[derive(Debug, Clone)] + pub struct Consensus2ControllerServiceClient { + inner: tonic::client::Grpc, + } + impl Consensus2ControllerServiceClient { + /// Attempt to create a new client by connecting to a given endpoint. + pub async fn connect(dst: D) -> Result + where + D: TryInto, + D::Error: Into, + { + let conn = tonic::transport::Endpoint::new(dst)?.connect().await?; + Ok(Self::new(conn)) + } + } + impl Consensus2ControllerServiceClient + where + T: tonic::client::GrpcService, + T::Error: Into, + T::ResponseBody: Body + std::marker::Send + 'static, + ::Error: Into + std::marker::Send, + { + pub fn new(inner: T) -> Self { + let inner = tonic::client::Grpc::new(inner); + Self { inner } + } + pub fn with_origin(inner: T, origin: Uri) -> Self { + let inner = tonic::client::Grpc::with_origin(inner, origin); + Self { inner } + } + pub fn with_interceptor( + inner: T, + interceptor: F, + ) -> Consensus2ControllerServiceClient> + where + F: tonic::service::Interceptor, + T::ResponseBody: Default, + T: tonic::codegen::Service< + http::Request, + Response = http::Response< + >::ResponseBody, + >, + >, + >>::Error: + Into + std::marker::Send + std::marker::Sync, + { + Consensus2ControllerServiceClient::new(InterceptedService::new(inner, interceptor)) + } + /// Compress requests with the given encoding. + /// + /// This requires the server to support it otherwise it might respond with an + /// error. + #[must_use] + pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self { + self.inner = self.inner.send_compressed(encoding); + self + } + /// Enable decompressing responses. + #[must_use] + pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self { + self.inner = self.inner.accept_compressed(encoding); + self + } + /// Limits the maximum size of a decoded message. + /// + /// Default: `4MB` + #[must_use] + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_decoding_message_size(limit); + self + } + /// Limits the maximum size of an encoded message. + /// + /// Default: `usize::MAX` + #[must_use] + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_encoding_message_size(limit); + self + } + /// Consensus request a Proposal to start consensus + /// ret: proposal + pub async fn get_proposal( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; + let codec = tonic_prost::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/controller.Consensus2ControllerService/GetProposal", + ); + let mut req = request.into_request(); + req.extensions_mut().insert(GrpcMethod::new( + "controller.Consensus2ControllerService", + "GetProposal", + )); + self.inner.unary(req, path, codec).await + } + /// when Consensus received a new proposal from other nodes, it will ask controller to check it + /// args: proposal hash + /// ret: ok or not + pub async fn check_proposal( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; + let codec = tonic_prost::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/controller.Consensus2ControllerService/CheckProposal", + ); + let mut req = request.into_request(); + req.extensions_mut().insert(GrpcMethod::new( + "controller.Consensus2ControllerService", + "CheckProposal", + )); + self.inner.unary(req, path, codec).await + } + /// after Consensus, tell controller a proposal has committed + pub async fn commit_block( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; + let codec = tonic_prost::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/controller.Consensus2ControllerService/CommitBlock", + ); + let mut req = request.into_request(); + req.extensions_mut().insert(GrpcMethod::new( + "controller.Consensus2ControllerService", + "CommitBlock", + )); + self.inner.unary(req, path, codec).await + } + } +} /// Generated server implementations. pub mod consensus2_controller_service_server { #![allow( @@ -1655,7 +1661,7 @@ pub mod consensus2_controller_service_server { B: Body + std::marker::Send + 'static, B::Error: Into + std::marker::Send + 'static, { - type Response = http::Response; + type Response = http::Response; type Error = std::convert::Infallible; type Future = BoxFuture; fn poll_ready( @@ -1694,7 +1700,7 @@ pub mod consensus2_controller_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetProposalSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -1737,7 +1743,7 @@ pub mod consensus2_controller_service_server { let inner = self.inner.clone(); let fut = async move { let method = CheckProposalSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -1780,7 +1786,7 @@ pub mod consensus2_controller_service_server { let inner = self.inner.clone(); let fut = async move { let method = CommitBlockSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -1796,7 +1802,7 @@ pub mod consensus2_controller_service_server { Box::pin(fut) } _ => Box::pin(async move { - let mut response = http::Response::new(empty_body()); + let mut response = http::Response::new(tonic::body::Body::default()); let headers = response.headers_mut(); headers.insert( tonic::Status::GRPC_STATUS, diff --git a/cloud-proto/src/proto/crypto.rs b/cloud-proto/src/proto/crypto.rs index 5f93fb7..53b166c 100644 --- a/cloud-proto/src/proto/crypto.rs +++ b/cloud-proto/src/proto/crypto.rs @@ -1,5 +1,5 @@ // This file is @generated by prost-build. -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct GetCryptoInfoResponse { #[prost(message, optional, tag = "1")] pub status: ::core::option::Option, @@ -12,38 +12,38 @@ pub struct GetCryptoInfoResponse { #[prost(uint32, tag = "5")] pub address_len: u32, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct HashDataRequest { #[prost(bytes = "vec", tag = "1")] pub data: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct VerifyDataHashRequest { #[prost(bytes = "vec", tag = "1")] pub data: ::prost::alloc::vec::Vec, #[prost(bytes = "vec", tag = "2")] pub hash: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct SignMessageRequest { #[prost(bytes = "vec", tag = "2")] pub msg: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct SignMessageResponse { #[prost(message, optional, tag = "1")] pub status: ::core::option::Option, #[prost(bytes = "vec", tag = "2")] pub signature: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct RecoverSignatureRequest { #[prost(bytes = "vec", tag = "1")] pub msg: ::prost::alloc::vec::Vec, #[prost(bytes = "vec", tag = "2")] pub signature: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct RecoverSignatureResponse { #[prost(message, optional, tag = "1")] pub status: ::core::option::Option, @@ -78,7 +78,7 @@ pub mod crypto_service_client { } impl CryptoServiceClient where - T: tonic::client::GrpcService, + T: tonic::client::GrpcService, T::Error: Into, T::ResponseBody: Body + std::marker::Send + 'static, ::Error: Into + std::marker::Send, @@ -99,12 +99,12 @@ pub mod crypto_service_client { F: tonic::service::Interceptor, T::ResponseBody: Default, T: tonic::codegen::Service< - http::Request, - Response = http::Response< - >::ResponseBody, + http::Request, + Response = http::Response< + >::ResponseBody, + >, >, - >, - >>::Error: + >>::Error: Into + std::marker::Send + std::marker::Sync, { CryptoServiceClient::new(InterceptedService::new(inner, interceptor)) @@ -149,7 +149,7 @@ pub mod crypto_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/crypto.CryptoService/GetCryptoInfo"); let mut req = request.into_request(); req.extensions_mut() @@ -165,7 +165,7 @@ pub mod crypto_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/crypto.CryptoService/HashData"); let mut req = request.into_request(); req.extensions_mut() @@ -181,7 +181,7 @@ pub mod crypto_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/crypto.CryptoService/VerifyDataHash"); let mut req = request.into_request(); req.extensions_mut() @@ -197,7 +197,7 @@ pub mod crypto_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/crypto.CryptoService/SignMessage"); let mut req = request.into_request(); req.extensions_mut() @@ -213,7 +213,7 @@ pub mod crypto_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/crypto.CryptoService/RecoverSignature"); let mut req = request.into_request(); @@ -230,7 +230,7 @@ pub mod crypto_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/crypto.CryptoService/CheckTransactions"); let mut req = request.into_request(); @@ -346,7 +346,7 @@ pub mod crypto_service_server { B: Body + std::marker::Send + 'static, B::Error: Into + std::marker::Send + 'static, { - type Response = http::Response; + type Response = http::Response; type Error = std::convert::Infallible; type Future = BoxFuture; fn poll_ready( @@ -383,7 +383,7 @@ pub mod crypto_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetCryptoInfoSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -422,7 +422,7 @@ pub mod crypto_service_server { let inner = self.inner.clone(); let fut = async move { let method = HashDataSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -463,7 +463,7 @@ pub mod crypto_service_server { let inner = self.inner.clone(); let fut = async move { let method = VerifyDataHashSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -504,7 +504,7 @@ pub mod crypto_service_server { let inner = self.inner.clone(); let fut = async move { let method = SignMessageSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -546,7 +546,7 @@ pub mod crypto_service_server { let inner = self.inner.clone(); let fut = async move { let method = RecoverSignatureSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -588,7 +588,7 @@ pub mod crypto_service_server { let inner = self.inner.clone(); let fut = async move { let method = CheckTransactionsSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -604,7 +604,7 @@ pub mod crypto_service_server { Box::pin(fut) } _ => Box::pin(async move { - let mut response = http::Response::new(empty_body()); + let mut response = http::Response::new(tonic::body::Body::default()); let headers = response.headers_mut(); headers.insert( tonic::Status::GRPC_STATUS, diff --git a/cloud-proto/src/proto/evm.rs b/cloud-proto/src/proto/evm.rs index 7f4094b..2acd84b 100644 --- a/cloud-proto/src/proto/evm.rs +++ b/cloud-proto/src/proto/evm.rs @@ -24,7 +24,7 @@ pub struct Receipt { #[prost(string, tag = "11")] pub error_message: ::prost::alloc::string::String, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct Log { #[prost(bytes = "vec", tag = "1")] pub address: ::prost::alloc::vec::Vec, @@ -45,32 +45,32 @@ pub struct Log { #[prost(uint64, tag = "9")] pub transaction_log_index: u64, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct ByteCode { #[prost(bytes = "vec", tag = "1")] pub byte_code: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct Balance { #[prost(bytes = "vec", tag = "1")] pub value: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct Nonce { #[prost(bytes = "vec", tag = "1")] pub nonce: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct ByteAbi { #[prost(bytes = "vec", tag = "1")] pub bytes_abi: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct ByteQuota { #[prost(bytes = "vec", tag = "1")] pub bytes_quota: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct ReceiptProof { #[prost(bytes = "vec", tag = "1")] pub receipt: ::prost::alloc::vec::Vec, @@ -79,7 +79,7 @@ pub struct ReceiptProof { #[prost(message, optional, tag = "3")] pub roots_info: ::core::option::Option, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct RootsInfo { #[prost(uint64, tag = "1")] pub height: u64, @@ -88,14 +88,14 @@ pub struct RootsInfo { #[prost(bytes = "vec", tag = "3")] pub receipt_root: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct BlockNumber { #[prost(oneof = "block_number::Lable", tags = "1, 2, 3")] pub lable: ::core::option::Option, } /// Nested message and enum types in `BlockNumber`. pub mod block_number { - #[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Oneof)] + #[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Oneof)] pub enum Lable { #[prost(uint64, tag = "1")] Height(u64), @@ -105,35 +105,35 @@ pub mod block_number { Hash(::prost::alloc::vec::Vec), } } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct GetCodeRequest { #[prost(message, optional, tag = "1")] pub address: ::core::option::Option, #[prost(message, optional, tag = "2")] pub block_number: ::core::option::Option, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct GetBalanceRequest { #[prost(message, optional, tag = "1")] pub address: ::core::option::Option, #[prost(message, optional, tag = "2")] pub block_number: ::core::option::Option, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct GetTransactionCountRequest { #[prost(message, optional, tag = "1")] pub address: ::core::option::Option, #[prost(message, optional, tag = "2")] pub block_number: ::core::option::Option, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct GetAbiRequest { #[prost(message, optional, tag = "1")] pub address: ::core::option::Option, #[prost(message, optional, tag = "2")] pub block_number: ::core::option::Option, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct GetStorageAtRequest { #[prost(message, optional, tag = "1")] pub address: ::core::option::Option, @@ -170,7 +170,7 @@ pub mod rpc_service_client { } impl RpcServiceClient where - T: tonic::client::GrpcService, + T: tonic::client::GrpcService, T::Error: Into, T::ResponseBody: Body + std::marker::Send + 'static, ::Error: Into + std::marker::Send, @@ -191,12 +191,12 @@ pub mod rpc_service_client { F: tonic::service::Interceptor, T::ResponseBody: Default, T: tonic::codegen::Service< - http::Request, - Response = http::Response< - >::ResponseBody, + http::Request, + Response = http::Response< + >::ResponseBody, + >, >, - >, - >>::Error: + >>::Error: Into + std::marker::Send + std::marker::Sync, { RpcServiceClient::new(InterceptedService::new(inner, interceptor)) @@ -239,7 +239,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/evm.RPCService/GetTransactionReceipt"); let mut req = request.into_request(); @@ -254,7 +254,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/evm.RPCService/GetCode"); let mut req = request.into_request(); req.extensions_mut() @@ -268,7 +268,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/evm.RPCService/GetBalance"); let mut req = request.into_request(); req.extensions_mut() @@ -282,7 +282,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/evm.RPCService/GetTransactionCount"); let mut req = request.into_request(); req.extensions_mut() @@ -296,7 +296,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/evm.RPCService/GetAbi"); let mut req = request.into_request(); req.extensions_mut() @@ -310,7 +310,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/evm.RPCService/EstimateQuota"); let mut req = request.into_request(); req.extensions_mut() @@ -324,7 +324,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/evm.RPCService/GetReceiptProof"); let mut req = request.into_request(); req.extensions_mut() @@ -338,7 +338,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/evm.RPCService/GetRootsInfo"); let mut req = request.into_request(); req.extensions_mut() @@ -353,7 +353,7 @@ pub mod rpc_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/evm.RPCService/GetStorageAt"); let mut req = request.into_request(); req.extensions_mut() @@ -474,7 +474,7 @@ pub mod rpc_service_server { B: Body + std::marker::Send + 'static, B::Error: Into + std::marker::Send + 'static, { - type Response = http::Response; + type Response = http::Response; type Error = std::convert::Infallible; type Future = BoxFuture; fn poll_ready( @@ -511,7 +511,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetTransactionReceiptSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -549,7 +549,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetCodeSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -588,7 +588,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetBalanceSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -630,7 +630,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetTransactionCountSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -668,7 +668,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetAbiSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -710,7 +710,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = EstimateQuotaSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -751,7 +751,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetReceiptProofSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -790,7 +790,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetRootsInfoSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -829,7 +829,7 @@ pub mod rpc_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetStorageAtSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -845,7 +845,7 @@ pub mod rpc_service_server { Box::pin(fut) } _ => Box::pin(async move { - let mut response = http::Response::new(empty_body()); + let mut response = http::Response::new(tonic::body::Body::default()); let headers = response.headers_mut(); headers.insert( tonic::Status::GRPC_STATUS, diff --git a/cloud-proto/src/proto/executor.rs b/cloud-proto/src/proto/executor.rs index 43a0f6f..71bcb9d 100644 --- a/cloud-proto/src/proto/executor.rs +++ b/cloud-proto/src/proto/executor.rs @@ -1,8 +1,8 @@ // This file is @generated by prost-build. -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct CallRequest { /// 1. length is 20 bytes for evm. - /// 2. if executor is multi-vm, it will be a path. + /// 1. if executor is multi-vm, it will be a path. #[prost(bytes = "vec", tag = "1")] pub to: ::prost::alloc::vec::Vec, #[prost(bytes = "vec", tag = "2")] @@ -16,7 +16,7 @@ pub struct CallRequest { #[prost(uint64, tag = "5")] pub height: u64, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct CallResponse { #[prost(bytes = "vec", tag = "1")] pub value: ::prost::alloc::vec::Vec, @@ -49,7 +49,7 @@ pub mod executor_service_client { } impl ExecutorServiceClient where - T: tonic::client::GrpcService, + T: tonic::client::GrpcService, T::Error: Into, T::ResponseBody: Body + std::marker::Send + 'static, ::Error: Into + std::marker::Send, @@ -70,12 +70,12 @@ pub mod executor_service_client { F: tonic::service::Interceptor, T::ResponseBody: Default, T: tonic::codegen::Service< - http::Request, - Response = http::Response< - >::ResponseBody, + http::Request, + Response = http::Response< + >::ResponseBody, + >, >, - >, - >>::Error: + >>::Error: Into + std::marker::Send + std::marker::Sync, { ExecutorServiceClient::new(InterceptedService::new(inner, interceptor)) @@ -120,7 +120,7 @@ pub mod executor_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/executor.ExecutorService/Exec"); let mut req = request.into_request(); req.extensions_mut() @@ -134,7 +134,7 @@ pub mod executor_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/executor.ExecutorService/Call"); let mut req = request.into_request(); req.extensions_mut() @@ -228,7 +228,7 @@ pub mod executor_service_server { B: Body + std::marker::Send + 'static, B::Error: Into + std::marker::Send + 'static, { - type Response = http::Response; + type Response = http::Response; type Error = std::convert::Infallible; type Future = BoxFuture; fn poll_ready( @@ -265,7 +265,7 @@ pub mod executor_service_server { let inner = self.inner.clone(); let fut = async move { let method = ExecSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -303,7 +303,7 @@ pub mod executor_service_server { let inner = self.inner.clone(); let fut = async move { let method = CallSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -319,7 +319,7 @@ pub mod executor_service_server { Box::pin(fut) } _ => Box::pin(async move { - let mut response = http::Response::new(empty_body()); + let mut response = http::Response::new(tonic::body::Body::default()); let headers = response.headers_mut(); headers.insert( tonic::Status::GRPC_STATUS, diff --git a/cloud-proto/src/proto/health_check.rs b/cloud-proto/src/proto/health_check.rs index c32a1c3..b298032 100644 --- a/cloud-proto/src/proto/health_check.rs +++ b/cloud-proto/src/proto/health_check.rs @@ -1,10 +1,12 @@ // This file is @generated by prost-build. -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct HealthCheckRequest { #[prost(string, tag = "1")] pub service: ::prost::alloc::string::String, } -#[derive(serde::Serialize, serde::Deserialize, Clone, Copy, PartialEq, ::prost::Message)] +#[derive( + serde::Serialize, serde::Deserialize, Clone, Copy, PartialEq, Eq, Hash, ::prost::Message, +)] pub struct HealthCheckResponse { #[prost(enumeration = "health_check_response::ServingStatus", tag = "1")] pub status: i32, @@ -81,7 +83,7 @@ pub mod health_client { } impl HealthClient where - T: tonic::client::GrpcService, + T: tonic::client::GrpcService, T::Error: Into, T::ResponseBody: Body + std::marker::Send + 'static, ::Error: Into + std::marker::Send, @@ -102,12 +104,12 @@ pub mod health_client { F: tonic::service::Interceptor, T::ResponseBody: Default, T: tonic::codegen::Service< - http::Request, - Response = http::Response< - >::ResponseBody, + http::Request, + Response = http::Response< + >::ResponseBody, + >, >, - >, - >>::Error: + >>::Error: Into + std::marker::Send + std::marker::Sync, { HealthClient::new(InterceptedService::new(inner, interceptor)) @@ -151,7 +153,7 @@ pub mod health_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/grpc.health.v1.Health/Check"); let mut req = request.into_request(); req.extensions_mut() @@ -240,7 +242,7 @@ pub mod health_server { B: Body + std::marker::Send + 'static, B::Error: Into + std::marker::Send + 'static, { - type Response = http::Response; + type Response = http::Response; type Error = std::convert::Infallible; type Future = BoxFuture; fn poll_ready( @@ -273,7 +275,7 @@ pub mod health_server { let inner = self.inner.clone(); let fut = async move { let method = CheckSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -289,7 +291,7 @@ pub mod health_server { Box::pin(fut) } _ => Box::pin(async move { - let mut response = http::Response::new(empty_body()); + let mut response = http::Response::new(tonic::body::Body::default()); let headers = response.headers_mut(); headers.insert( tonic::Status::GRPC_STATUS, diff --git a/cloud-proto/src/proto/network.rs b/cloud-proto/src/proto/network.rs index 0997124..33d3f1a 100644 --- a/cloud-proto/src/proto/network.rs +++ b/cloud-proto/src/proto/network.rs @@ -1,10 +1,12 @@ // This file is @generated by prost-build. -#[derive(serde::Serialize, serde::Deserialize, Clone, Copy, PartialEq, ::prost::Message)] +#[derive( + serde::Serialize, serde::Deserialize, Clone, Copy, PartialEq, Eq, Hash, ::prost::Message, +)] pub struct NetworkStatusResponse { #[prost(uint64, tag = "1")] pub peer_count: u64, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct NetworkMsg { #[prost(string, tag = "1")] pub module: ::prost::alloc::string::String, @@ -15,7 +17,7 @@ pub struct NetworkMsg { #[prost(bytes = "vec", tag = "4")] pub msg: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct RegisterInfo { #[prost(string, tag = "1")] pub module_name: ::prost::alloc::string::String, @@ -52,7 +54,7 @@ pub mod network_service_client { } impl NetworkServiceClient where - T: tonic::client::GrpcService, + T: tonic::client::GrpcService, T::Error: Into, T::ResponseBody: Body + std::marker::Send + 'static, ::Error: Into + std::marker::Send, @@ -73,12 +75,12 @@ pub mod network_service_client { F: tonic::service::Interceptor, T::ResponseBody: Default, T: tonic::codegen::Service< - http::Request, - Response = http::Response< - >::ResponseBody, + http::Request, + Response = http::Response< + >::ResponseBody, + >, >, - >, - >>::Error: + >>::Error: Into + std::marker::Send + std::marker::Sync, { NetworkServiceClient::new(InterceptedService::new(inner, interceptor)) @@ -123,7 +125,7 @@ pub mod network_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/network.NetworkService/SendMsg"); let mut req = request.into_request(); req.extensions_mut() @@ -139,7 +141,7 @@ pub mod network_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/network.NetworkService/Broadcast"); let mut req = request.into_request(); req.extensions_mut() @@ -154,7 +156,7 @@ pub mod network_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/network.NetworkService/GetNetworkStatus"); let mut req = request.into_request(); @@ -174,7 +176,7 @@ pub mod network_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/network.NetworkService/RegisterNetworkMsgHandler", ); @@ -194,7 +196,7 @@ pub mod network_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/network.NetworkService/AddNode"); let mut req = request.into_request(); req.extensions_mut() @@ -212,7 +214,7 @@ pub mod network_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/network.NetworkService/GetPeersNetInfo"); let mut req = request.into_request(); @@ -222,118 +224,6 @@ pub mod network_service_client { } } } -/// Generated client implementations. -pub mod network_msg_handler_service_client { - #![allow( - unused_variables, - dead_code, - missing_docs, - clippy::wildcard_imports, - clippy::let_unit_value - )] - use tonic::codegen::http::Uri; - use tonic::codegen::*; - /// modules which need network must implement this service - #[derive(Debug, Clone)] - pub struct NetworkMsgHandlerServiceClient { - inner: tonic::client::Grpc, - } - impl NetworkMsgHandlerServiceClient { - /// Attempt to create a new client by connecting to a given endpoint. - pub async fn connect(dst: D) -> Result - where - D: TryInto, - D::Error: Into, - { - let conn = tonic::transport::Endpoint::new(dst)?.connect().await?; - Ok(Self::new(conn)) - } - } - impl NetworkMsgHandlerServiceClient - where - T: tonic::client::GrpcService, - T::Error: Into, - T::ResponseBody: Body + std::marker::Send + 'static, - ::Error: Into + std::marker::Send, - { - pub fn new(inner: T) -> Self { - let inner = tonic::client::Grpc::new(inner); - Self { inner } - } - pub fn with_origin(inner: T, origin: Uri) -> Self { - let inner = tonic::client::Grpc::with_origin(inner, origin); - Self { inner } - } - pub fn with_interceptor( - inner: T, - interceptor: F, - ) -> NetworkMsgHandlerServiceClient> - where - F: tonic::service::Interceptor, - T::ResponseBody: Default, - T: tonic::codegen::Service< - http::Request, - Response = http::Response< - >::ResponseBody, - >, - >, - >>::Error: - Into + std::marker::Send + std::marker::Sync, - { - NetworkMsgHandlerServiceClient::new(InterceptedService::new(inner, interceptor)) - } - /// Compress requests with the given encoding. - /// - /// This requires the server to support it otherwise it might respond with an - /// error. - #[must_use] - pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self { - self.inner = self.inner.send_compressed(encoding); - self - } - /// Enable decompressing responses. - #[must_use] - pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self { - self.inner = self.inner.accept_compressed(encoding); - self - } - /// Limits the maximum size of a decoded message. - /// - /// Default: `4MB` - #[must_use] - pub fn max_decoding_message_size(mut self, limit: usize) -> Self { - self.inner = self.inner.max_decoding_message_size(limit); - self - } - /// Limits the maximum size of an encoded message. - /// - /// Default: `usize::MAX` - #[must_use] - pub fn max_encoding_message_size(mut self, limit: usize) -> Self { - self.inner = self.inner.max_encoding_message_size(limit); - self - } - pub async fn process_network_msg( - &mut self, - request: impl tonic::IntoRequest, - ) -> std::result::Result, tonic::Status> - { - self.inner.ready().await.map_err(|e| { - tonic::Status::unknown(format!("Service was not ready: {}", e.into())) - })?; - let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/network.NetworkMsgHandlerService/ProcessNetworkMsg", - ); - let mut req = request.into_request(); - req.extensions_mut().insert(GrpcMethod::new( - "network.NetworkMsgHandlerService", - "ProcessNetworkMsg", - )); - self.inner.unary(req, path, codec).await - } - } -} /// Generated server implementations. pub mod network_service_server { #![allow( @@ -443,7 +333,7 @@ pub mod network_service_server { B: Body + std::marker::Send + 'static, B::Error: Into + std::marker::Send + 'static, { - type Response = http::Response; + type Response = http::Response; type Error = std::convert::Infallible; type Future = BoxFuture; fn poll_ready( @@ -478,7 +368,7 @@ pub mod network_service_server { let inner = self.inner.clone(); let fut = async move { let method = SendMsgSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -517,7 +407,7 @@ pub mod network_service_server { let inner = self.inner.clone(); let fut = async move { let method = BroadcastSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -558,7 +448,7 @@ pub mod network_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetNetworkStatusSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -600,7 +490,7 @@ pub mod network_service_server { let inner = self.inner.clone(); let fut = async move { let method = RegisterNetworkMsgHandlerSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -642,7 +532,7 @@ pub mod network_service_server { let inner = self.inner.clone(); let fut = async move { let method = AddNodeSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -683,7 +573,7 @@ pub mod network_service_server { let inner = self.inner.clone(); let fut = async move { let method = GetPeersNetInfoSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -699,7 +589,7 @@ pub mod network_service_server { Box::pin(fut) } _ => Box::pin(async move { - let mut response = http::Response::new(empty_body()); + let mut response = http::Response::new(tonic::body::Body::default()); let headers = response.headers_mut(); headers.insert( tonic::Status::GRPC_STATUS, @@ -732,6 +622,118 @@ pub mod network_service_server { const NAME: &'static str = SERVICE_NAME; } } +/// Generated client implementations. +pub mod network_msg_handler_service_client { + #![allow( + unused_variables, + dead_code, + missing_docs, + clippy::wildcard_imports, + clippy::let_unit_value + )] + use tonic::codegen::http::Uri; + use tonic::codegen::*; + /// modules which need network must implement this service + #[derive(Debug, Clone)] + pub struct NetworkMsgHandlerServiceClient { + inner: tonic::client::Grpc, + } + impl NetworkMsgHandlerServiceClient { + /// Attempt to create a new client by connecting to a given endpoint. + pub async fn connect(dst: D) -> Result + where + D: TryInto, + D::Error: Into, + { + let conn = tonic::transport::Endpoint::new(dst)?.connect().await?; + Ok(Self::new(conn)) + } + } + impl NetworkMsgHandlerServiceClient + where + T: tonic::client::GrpcService, + T::Error: Into, + T::ResponseBody: Body + std::marker::Send + 'static, + ::Error: Into + std::marker::Send, + { + pub fn new(inner: T) -> Self { + let inner = tonic::client::Grpc::new(inner); + Self { inner } + } + pub fn with_origin(inner: T, origin: Uri) -> Self { + let inner = tonic::client::Grpc::with_origin(inner, origin); + Self { inner } + } + pub fn with_interceptor( + inner: T, + interceptor: F, + ) -> NetworkMsgHandlerServiceClient> + where + F: tonic::service::Interceptor, + T::ResponseBody: Default, + T: tonic::codegen::Service< + http::Request, + Response = http::Response< + >::ResponseBody, + >, + >, + >>::Error: + Into + std::marker::Send + std::marker::Sync, + { + NetworkMsgHandlerServiceClient::new(InterceptedService::new(inner, interceptor)) + } + /// Compress requests with the given encoding. + /// + /// This requires the server to support it otherwise it might respond with an + /// error. + #[must_use] + pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self { + self.inner = self.inner.send_compressed(encoding); + self + } + /// Enable decompressing responses. + #[must_use] + pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self { + self.inner = self.inner.accept_compressed(encoding); + self + } + /// Limits the maximum size of a decoded message. + /// + /// Default: `4MB` + #[must_use] + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_decoding_message_size(limit); + self + } + /// Limits the maximum size of an encoded message. + /// + /// Default: `usize::MAX` + #[must_use] + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_encoding_message_size(limit); + self + } + pub async fn process_network_msg( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; + let codec = tonic_prost::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/network.NetworkMsgHandlerService/ProcessNetworkMsg", + ); + let mut req = request.into_request(); + req.extensions_mut().insert(GrpcMethod::new( + "network.NetworkMsgHandlerService", + "ProcessNetworkMsg", + )); + self.inner.unary(req, path, codec).await + } + } +} /// Generated server implementations. pub mod network_msg_handler_service_server { #![allow( @@ -813,7 +815,7 @@ pub mod network_msg_handler_service_server { B: Body + std::marker::Send + 'static, B::Error: Into + std::marker::Send + 'static, { - type Response = http::Response; + type Response = http::Response; type Error = std::convert::Infallible; type Future = BoxFuture; fn poll_ready( @@ -853,7 +855,7 @@ pub mod network_msg_handler_service_server { let inner = self.inner.clone(); let fut = async move { let method = ProcessNetworkMsgSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -869,7 +871,7 @@ pub mod network_msg_handler_service_server { Box::pin(fut) } _ => Box::pin(async move { - let mut response = http::Response::new(empty_body()); + let mut response = http::Response::new(tonic::body::Body::default()); let headers = response.headers_mut(); headers.insert( tonic::Status::GRPC_STATUS, diff --git a/cloud-proto/src/proto/storage.rs b/cloud-proto/src/proto/storage.rs index 5fd6f26..26050d5 100644 --- a/cloud-proto/src/proto/storage.rs +++ b/cloud-proto/src/proto/storage.rs @@ -1,5 +1,5 @@ // This file is @generated by prost-build. -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct Content { #[prost(uint32, tag = "1")] pub region: u32, @@ -8,14 +8,14 @@ pub struct Content { #[prost(bytes = "vec", tag = "3")] pub value: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct ExtKey { #[prost(uint32, tag = "1")] pub region: u32, #[prost(bytes = "vec", tag = "2")] pub key: ::prost::alloc::vec::Vec, } -#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, ::prost::Message)] +#[derive(serde::Serialize, serde::Deserialize, Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct Value { #[prost(message, optional, tag = "1")] pub status: ::core::option::Option, @@ -128,7 +128,7 @@ pub mod storage_service_client { } impl StorageServiceClient where - T: tonic::client::GrpcService, + T: tonic::client::GrpcService, T::Error: Into, T::ResponseBody: Body + std::marker::Send + 'static, ::Error: Into + std::marker::Send, @@ -149,12 +149,12 @@ pub mod storage_service_client { F: tonic::service::Interceptor, T::ResponseBody: Default, T: tonic::codegen::Service< - http::Request, - Response = http::Response< - >::ResponseBody, + http::Request, + Response = http::Response< + >::ResponseBody, + >, >, - >, - >>::Error: + >>::Error: Into + std::marker::Send + std::marker::Sync, { StorageServiceClient::new(InterceptedService::new(inner, interceptor)) @@ -199,7 +199,7 @@ pub mod storage_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/storage.StorageService/Store"); let mut req = request.into_request(); req.extensions_mut() @@ -214,7 +214,7 @@ pub mod storage_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/storage.StorageService/Load"); let mut req = request.into_request(); req.extensions_mut() @@ -230,7 +230,7 @@ pub mod storage_service_client { self.inner.ready().await.map_err(|e| { tonic::Status::unknown(format!("Service was not ready: {}", e.into())) })?; - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/storage.StorageService/Delete"); let mut req = request.into_request(); req.extensions_mut() @@ -330,7 +330,7 @@ pub mod storage_service_server { B: Body + std::marker::Send + 'static, B::Error: Into + std::marker::Send + 'static, { - type Response = http::Response; + type Response = http::Response; type Error = std::convert::Infallible; type Future = BoxFuture; fn poll_ready( @@ -364,7 +364,7 @@ pub mod storage_service_server { let inner = self.inner.clone(); let fut = async move { let method = StoreSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -399,7 +399,7 @@ pub mod storage_service_server { let inner = self.inner.clone(); let fut = async move { let method = LoadSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -434,7 +434,7 @@ pub mod storage_service_server { let inner = self.inner.clone(); let fut = async move { let method = DeleteSvc(inner); - let codec = tonic::codec::ProstCodec::default(); + let codec = tonic_prost::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec) .apply_compression_config( accept_compression_encodings, @@ -450,7 +450,7 @@ pub mod storage_service_server { Box::pin(fut) } _ => Box::pin(async move { - let mut response = http::Response::new(empty_body()); + let mut response = http::Response::new(tonic::body::Body::default()); let headers = response.headers_mut(); headers.insert( tonic::Status::GRPC_STATUS, diff --git a/cloud-proto/src/retry.rs b/cloud-proto/src/retry.rs index 860fd25..14aa7d7 100755 --- a/cloud-proto/src/retry.rs +++ b/cloud-proto/src/retry.rs @@ -28,7 +28,7 @@ use crate::{ network::network_service_client::NetworkServiceClient, storage::storage_service_client::StorageServiceClient, }; -use backoff::{backoff::Backoff, ExponentialBackoff}; +use backoff::{ExponentialBackoff, backoff::Backoff}; use futures_retry::{ErrorHandler, FutureRetry, RetryPolicy}; use std::{fmt::Debug, future::Future, time::Duration}; use tonic::{Code, Status}; diff --git a/cloud-util/Cargo.toml b/cloud-util/Cargo.toml index 0165e7f..2e4a031 100644 --- a/cloud-util/Cargo.toml +++ b/cloud-util/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "cloud-util" -version = "0.8.2" +version = "0.8.3" authors = [ "ypf ", "Rivtower Technologies ", ] -edition = "2021" +edition = "2024" license = "Apache-2.0" description = "cita-cloud utility library" @@ -13,18 +13,18 @@ description = "cita-cloud utility library" [dependencies] anyhow = "1.0" -axum = "0.7" -prost = "0.13" -tokio = { version = "1.41", default-features = false, features = [ +axum = "0.8" +prost = "0.14" +tokio = { version = "1.49", default-features = false, features = [ "fs", "rt-multi-thread", ] } -toml = "0.8" -tonic = "0.12" +toml = "1.0" +tonic = "0.14" tower = "0.5" futures = "0.3" -hyper = { version = "1.5", features = ["full"] } -prometheus = "0.13" +hyper = { version = "1.8", features = ["full"] } +prometheus = "0.14" lazy_static = "1.5" reqwest = { version = "0.12", default-features = false } # for opentelemetry-http tracing = "0.1" @@ -32,12 +32,12 @@ tracing-subscriber = { version = "0.3", features = [ "env-filter", "local-time", ] } -tracing-opentelemetry = "0.27" +tracing-opentelemetry = "0.32" tracing-appender = "0.2" -opentelemetry = { version = "0.26" } -opentelemetry-otlp = { version = "0.26", features = ["tokio"] } -opentelemetry-http = { version = "0.26", features = ["reqwest"] } -opentelemetry_sdk = { version = "0.26", features = [ +opentelemetry = { version = "0.31" } +opentelemetry-otlp = { version = "0.31", features = ["tokio", "grpc-tonic"] } +opentelemetry-http = { version = "0.31", features = ["reqwest"] } +opentelemetry_sdk = { version = "0.31", features = [ "jaeger_remote_sampler", "rt-tokio", ] } @@ -45,9 +45,11 @@ serde = { version = "1.0", features = ["derive"] } time = "0.3" chrono = "0.4" backtrace = "0.3" -flume = "0.11" +flume = "0.12" +http-body-util = "0.1" +bytes = "1.11" -cita_cloud_proto = { path = "../cloud-proto", version = "=6.7.4" } +cita_cloud_proto = { path = "../cloud-proto", version = "=6.7.5" } [target.'cfg(not(windows))'.dependencies] signal-hook = { version = "0.3" } @@ -57,4 +59,4 @@ signal-hook-tokio = { version = "0.3", features = ["futures-v0_3"] } [dev-dependencies] serde = { version = "1.0", features = ["derive"] } serde_derive = "1.0" -criterion = "0.5" +criterion = "0.8" diff --git a/cloud-util/src/common.rs b/cloud-util/src/common.rs index 3589a34..6c125f5 100644 --- a/cloud-util/src/common.rs +++ b/cloud-util/src/common.rs @@ -18,9 +18,9 @@ use cita_cloud_proto::blockchain::{ }; use cita_cloud_proto::common::Address; use cita_cloud_proto::status_code::StatusCodeEnum; +use serde::Deserialize; use std::fs; use std::path::Path; -use toml::macros::Deserialize; use toml::Value; pub const ADDR_BYTES_LEN: usize = 20; @@ -77,17 +77,16 @@ pub fn extract_compact(block: Block) -> CompactBlock { } } -pub fn read_toml<'a, T: Deserialize<'a>>(path: impl AsRef, name: &'a str) -> T { - let s = fs::read_to_string(path) - .map_err(|e| println!("read_to_string err: {e}")) - .unwrap(); - let config: Value = s - .parse() - .map_err(|e| println!("toml parse err: {e}")) - .unwrap(); - T::deserialize(config[name].clone()) - .map_err(|e| println!("config deserialize err: {e}")) - .unwrap() +pub fn read_toml(path: impl AsRef, name: &str) -> T +where + T: for<'de> Deserialize<'de>, +{ + let s = fs::read_to_string(path).unwrap_or_else(|e| panic!("read_to_string err: {e}")); + let config: Value = toml::from_str(&s).unwrap_or_else(|e| panic!("toml parse err: {e}")); + let value = config + .get(name) + .unwrap_or_else(|| panic!("config get err: {name}")); + T::deserialize(value.clone()).unwrap_or_else(|e| panic!("config deserialize err: {e}")) } #[cfg(test)] diff --git a/cloud-util/src/metrics.rs b/cloud-util/src/metrics.rs index 34bb623..fdadbb0 100644 --- a/cloud-util/src/metrics.rs +++ b/cloud-util/src/metrics.rs @@ -1,10 +1,10 @@ use axum::routing::get; -use axum::{http::StatusCode, response::IntoResponse, Router}; -use hyper::{Request, Response}; +use axum::{Router, http::StatusCode, response::IntoResponse}; +use hyper::Request; use lazy_static::lazy_static; use prometheus::{ - exponential_buckets, gather, register_counter, register_gauge, register_histogram, Counter, - Encoder, Gauge, Histogram, TextEncoder, + Counter, Encoder, Gauge, Histogram, TextEncoder, exponential_buckets, gather, register_counter, + register_gauge, register_histogram, }; use std::collections::HashMap; use std::time::Instant; @@ -12,7 +12,6 @@ use std::{ sync::{Arc, RwLock}, task::{Context, Poll}, }; -use tonic::body::BoxBody; use tower::{Layer, Service}; lazy_static! { @@ -200,10 +199,11 @@ pub struct RpcMetricsService { buckets: Vec, } -impl Service> for RpcMetricsService +impl Service> for RpcMetricsService where - S: Service, Response = Response> + Clone + Send + 'static, + S: Service> + Clone + Send + 'static, S::Future: Send + 'static, + ReqBody: Send + 'static, { type Response = S::Response; type Error = S::Error; @@ -213,7 +213,7 @@ where self.inner.poll_ready(cx) } - fn call(&mut self, req: Request) -> Self::Future { + fn call(&mut self, req: Request) -> Self::Future { let clone = self.inner.clone(); let mut inner = std::mem::replace(&mut self.inner, clone); @@ -221,7 +221,7 @@ where let client_name = req .headers() .get("client-name") - .map(|v| v.to_str().unwrap()); + .map(|v: &axum::http::HeaderValue| v.to_str().unwrap()); let uri_string = req.uri().to_string(); let method_name = uri_string.rsplit_once('/').map(|c| c.1); diff --git a/cloud-util/src/network.rs b/cloud-util/src/network.rs index a15b1d5..e9322f0 100644 --- a/cloud-util/src/network.rs +++ b/cloud-util/src/network.rs @@ -13,8 +13,8 @@ // limitations under the License. use cita_cloud_proto::client::{InterceptedSvc, NetworkClientTrait}; -use cita_cloud_proto::network::network_service_client::NetworkServiceClient; use cita_cloud_proto::network::RegisterInfo; +use cita_cloud_proto::network::network_service_client::NetworkServiceClient; use cita_cloud_proto::retry::RetryClient; use cita_cloud_proto::status_code::StatusCodeEnum; diff --git a/cloud-util/src/tracer.rs b/cloud-util/src/tracer.rs index c5dc9fc..7f55315 100644 --- a/cloud-util/src/tracer.rs +++ b/cloud-util/src/tracer.rs @@ -13,19 +13,20 @@ // limitations under the License. use chrono::{Local, Offset}; -use opentelemetry::{global, propagation::Extractor, trace::TracerProvider, KeyValue}; +use opentelemetry::{KeyValue, global, propagation::Extractor, trace::TracerProvider}; +use opentelemetry_otlp::WithExportConfig; use opentelemetry_sdk::{ + Resource, propagation::TraceContextPropagator, runtime, - trace::{BatchConfig, Sampler}, - Resource, + trace::{Sampler, SdkTracerProvider}, }; use serde::{Deserialize, Serialize}; use std::str::FromStr; -use time::{format_description::well_known, UtcOffset}; +use time::{UtcOffset, format_description::well_known}; use tonic::Request; use tracing_opentelemetry::{OpenTelemetryLayer, OpenTelemetrySpanExt}; -use tracing_subscriber::{fmt::format, fmt::time::OffsetTime, prelude::*, EnvFilter}; +use tracing_subscriber::{EnvFilter, fmt::format, fmt::time::OffsetTime, prelude::*}; struct MetadataMap<'a>(&'a tonic::metadata::MetadataMap); @@ -77,29 +78,34 @@ pub fn init_tracer( let mut agent = None; if let Some(agent_endpoint) = &log_config.agent_endpoint { global::set_text_map_propagator(TraceContextPropagator::new()); - agent = Some( - opentelemetry_otlp::new_pipeline() - .tracing() - .with_trace_config( - opentelemetry_sdk::trace::Config::default() - .with_sampler( - Sampler::jaeger_remote( - runtime::Tokio, - reqwest::Client::new(), - Sampler::AlwaysOff, - &log_config.service_name, - ) - .with_endpoint(agent_endpoint) - .build() - .unwrap(), - ) - .with_resource(Resource::new(vec![KeyValue::new("domain", domain)])), + let exporter = opentelemetry_otlp::SpanExporter::builder() + .with_tonic() + .with_endpoint(agent_endpoint) + .build()?; + + let provider = SdkTracerProvider::builder() + .with_batch_exporter(exporter) + .with_sampler( + Sampler::jaeger_remote( + runtime::Tokio, + reqwest::Client::new(), + Sampler::AlwaysOff, + &log_config.service_name, ) - .with_batch_config(BatchConfig::default()) - .with_exporter(opentelemetry_otlp::new_exporter().tonic()) - .install_batch(runtime::Tokio)? - .tracer("cita_cloud_tracer"), - ); + .with_endpoint(agent_endpoint) + .build() + .unwrap(), + ) + .with_resource( + Resource::builder() + .with_attributes(vec![KeyValue::new("domain", domain)]) + .build(), + ) + .build(); + + let tracer = provider.tracer("cita_cloud_tracer"); + global::set_tracer_provider(provider); + agent = Some(tracer); } // log @@ -178,12 +184,8 @@ pub fn init_tracer( Ok(()) } -pub fn shutdown_tracer() { - opentelemetry::global::shutdown_tracer_provider(); -} - pub fn set_parent(request: &Request) { let parent_cx = global::get_text_map_propagator(|prop| prop.extract(&MetadataMap(request.metadata()))); - tracing::Span::current().set_parent(parent_cx); + let _ = tracing::Span::current().set_parent(parent_cx); }