linera_rpc/
lib.rs

1// Copyright (c) Zefchain Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4//! This module provides network abstractions and the data schemas for remote procedure
5//! calls (RPCs) in the Linera protocol.
6
7// `tracing::instrument` is not compatible with this nightly Clippy lint
8#![allow(unknown_lints)]
9
10pub mod config;
11pub mod node_provider;
12
13pub mod client;
14
15mod cross_chain_message_queue;
16mod message;
17#[cfg(with_simple_network)]
18pub mod simple;
19
20pub mod grpc;
21
22pub use client::Client;
23pub use message::RpcMessage;
24pub use node_provider::{NodeOptions, NodeProvider};
25
26#[derive(Clone, Debug, serde::Serialize, serde::Deserialize)]
27#[cfg_attr(with_testing, derive(Eq, PartialEq))]
28pub struct HandleLiteCertRequest<'a> {
29    pub certificate: linera_chain::types::LiteCertificate<'a>,
30    pub wait_for_outgoing_messages: bool,
31}
32
33#[derive(Clone, Debug, serde::Serialize, serde::Deserialize)]
34#[cfg_attr(with_testing, derive(Eq, PartialEq))]
35pub struct HandleConfirmedCertificateRequest {
36    pub certificate: linera_chain::types::ConfirmedBlockCertificate,
37    pub wait_for_outgoing_messages: bool,
38}
39
40#[derive(Clone, Debug, serde::Serialize, serde::Deserialize)]
41#[cfg_attr(with_testing, derive(Eq, PartialEq))]
42pub struct HandleValidatedCertificateRequest {
43    pub certificate: linera_chain::types::ValidatedBlockCertificate,
44}
45
46#[derive(Clone, Debug, serde::Serialize, serde::Deserialize)]
47#[cfg_attr(with_testing, derive(Eq, PartialEq))]
48pub struct HandleTimeoutCertificateRequest {
49    pub certificate: linera_chain::types::TimeoutCertificate,
50}
51
52pub const FILE_DESCRIPTOR_SET: &[u8] = tonic::include_file_descriptor_set!("file_descriptor_set");
53
54#[cfg(not(target_arch = "wasm32"))]
55pub const CERT_PEM: &str = include_str!(concat!(env!("OUT_DIR"), "/self_signed_cert.pem"));
56#[cfg(not(target_arch = "wasm32"))]
57pub const KEY_PEM: &str = include_str!(concat!(env!("OUT_DIR"), "/private_key.pem"));