linera_service/lib.rs
1// Copyright (c) Facebook, Inc. and its affiliates.
2// Copyright (c) Zefchain Labs, Inc.
3// SPDX-License-Identifier: Apache-2.0
4
5//! This module provides the executables needed to operate a Linera service, including a placeholder wallet acting as a GraphQL service for user interfaces.
6
7#![recursion_limit = "256"]
8#![deny(missing_docs)]
9
10pub mod cli;
11pub mod cli_wrappers;
12/// Configuration types for the service binaries.
13pub mod config;
14/// The controller that orchestrates worker services.
15pub mod controller;
16/// The GraphQL node service exposing wallet and chain state.
17pub mod node_service;
18/// Helpers for creating and building application projects.
19pub mod project;
20/// Tracking of GraphQL subscriptions by query.
21pub mod query_subscription;
22/// Storage backend selection for the service binaries.
23pub mod storage;
24pub mod task_processor;
25pub mod tracing;
26/// Assorted helper utilities for the service binaries.
27pub mod util;
28pub use linera_wallet_json::PersistentWallet as Wallet;
29
30/// Registers every metric this crate declares.
31///
32/// Without this, a metric is only exported after the code path that observes it has run, so a
33/// rarely-taken path leaves its panels blank and makes a routine restart look like the metric
34/// was removed.
35#[cfg(with_metrics)]
36pub fn init_metrics() {
37 linera_base::init_metrics();
38 linera_cache::init_metrics();
39 linera_chain::init_metrics();
40 linera_core::init_metrics();
41 linera_execution::init_metrics();
42 linera_exporter::init_metrics();
43 linera_faucet_server::init_metrics();
44 linera_rpc::init_metrics();
45 linera_storage::init_metrics();
46 linera_views::init_metrics();
47 node_service::query_cache_metrics::init_metrics();
48 task_processor::metrics::init_metrics();
49}