partner_chains_db_sync_data_sources/sidechain_rpc/
mod.rs

1//! Db-Sync data source used by Partner Chain Json RPC
2use crate::block::BlockDataSourceImpl;
3use pallet_sidechain_rpc::SidechainRpcDataSource;
4use partner_chains_data_source_metrics::{McFollowerMetrics, observed_async_trait};
5use sidechain_domain::MainchainBlock;
6use std::sync::Arc;
7
8/// Db-Sync data source serving basic Cardano block data
9pub struct SidechainRpcDataSourceImpl {
10	/// [BlockDataSourceImpl] instance shared with other data sources for cache reuse.
11	inner: Arc<BlockDataSourceImpl>,
12	/// Prometheus metrics client
13	metrics_opt: Option<McFollowerMetrics>,
14}
15
16impl SidechainRpcDataSourceImpl {
17	/// Creates a Sidechain new data source by wrapping the given instance of [BlockDataSourceImpl]
18	pub fn new(inner: Arc<BlockDataSourceImpl>, metrics_opt: Option<McFollowerMetrics>) -> Self {
19		Self { inner, metrics_opt }
20	}
21}
22
23observed_async_trait!(
24impl SidechainRpcDataSource for SidechainRpcDataSourceImpl {
25	async fn get_latest_block_info(
26		&self,
27	) -> Result<MainchainBlock, Box<dyn std::error::Error + Send + Sync>> {
28		self.inner.get_latest_block_info().await
29	}
30}
31);