partner_chains_mock_data_sources/
mc_hash.rs1use crate::Result;
2use crate::block::BlockDataSourceMock;
3use async_trait::async_trait;
4use sidechain_domain::*;
5use sp_timestamp::Timestamp;
6use std::sync::Arc;
7
8pub struct McHashDataSourceMock {
9 block_source: Arc<BlockDataSourceMock>,
10}
11
12impl McHashDataSourceMock {
13 pub fn new(inner: Arc<BlockDataSourceMock>) -> Self {
14 Self { block_source: inner }
15 }
16}
17
18#[async_trait]
19impl sidechain_mc_hash::McHashDataSource for McHashDataSourceMock {
20 async fn get_latest_stable_block_for(
21 &self,
22 reference_timestamp: sp_timestamp::Timestamp,
23 ) -> Result<Option<MainchainBlock>> {
24 Ok(self
25 .block_source
26 .get_latest_stable_block_for(Timestamp::new(reference_timestamp.as_millis()))
27 .await?)
28 }
29
30 async fn get_stable_block_for(
31 &self,
32 hash: McBlockHash,
33 reference_timestamp: sp_timestamp::Timestamp,
34 ) -> Result<Option<MainchainBlock>> {
35 Ok(self
36 .block_source
37 .get_stable_block_for(hash, Timestamp::new(reference_timestamp.as_millis()))
38 .await?)
39 }
40
41 async fn get_block_by_hash(&self, hash: McBlockHash) -> Result<Option<MainchainBlock>> {
42 Ok(self.block_source.get_block_by_hash(hash).await?)
43 }
44}