pub struct FetchingDataSource<Types, S, P>where
Types: NodeType,{
fetcher: Arc<Fetcher<Types, S, P>>,
scanner: Option<BackgroundTask>,
aggregator: Option<BackgroundTask>,
pruner: Pruner<Types, S>,
}
Expand description
The most basic kind of data source.
A data source is constructed modularly by combining a storage implementation with a Fetcher. The former allows the query service to store the data it has persistently in an easily accessible storage medium, such as the local file system or a database. This allows it to answer queries efficiently and to maintain its state across restarts. The latter allows the query service to fetch data that is missing from its storage from an external data availability provider, such as the Tiramisu DA network or another instance of the query service.
These two components of a data source are combined in FetchingDataSource
, which is the
lowest level kind of data source available. It simply uses the storage implementation to fetch
data when available, and fills in everything else using the fetcher. Various kinds of data
sources can be constructed out of FetchingDataSource
by changing the storage and fetcher
implementations used, and more complex data sources can be built on top using data source
combinators.
Fields§
§fetcher: Arc<Fetcher<Types, S, P>>
§scanner: Option<BackgroundTask>
§aggregator: Option<BackgroundTask>
§pruner: Pruner<Types, S>
Implementations§
Source§impl<Types, S, P> FetchingDataSource<Types, S, P>where
Types: NodeType,
Payload<Types>: QueryablePayload<Types>,
Header<Types>: QueryableHeader<Types>,
S: VersionedDataSource + PruneStorage + HasMetrics + MigrateTypes<Types> + 'static,
for<'a> S::Transaction<'a>: UpdateAvailabilityStorage<Types> + UpdateAggregatesStorage<Types>,
for<'a> S::ReadOnly<'a>: AvailabilityStorage<Types> + NodeStorage<Types> + PrunedHeightStorage + AggregatesStorage<Types>,
P: AvailabilityProvider<Types>,
impl<Types, S, P> FetchingDataSource<Types, S, P>where
Types: NodeType,
Payload<Types>: QueryablePayload<Types>,
Header<Types>: QueryableHeader<Types>,
S: VersionedDataSource + PruneStorage + HasMetrics + MigrateTypes<Types> + 'static,
for<'a> S::Transaction<'a>: UpdateAvailabilityStorage<Types> + UpdateAggregatesStorage<Types>,
for<'a> S::ReadOnly<'a>: AvailabilityStorage<Types> + NodeStorage<Types> + PrunedHeightStorage + AggregatesStorage<Types>,
P: AvailabilityProvider<Types>,
Source§impl<Types: NodeType, P> FetchingDataSource<Types, FileSystemStorage<Types>, P>where
Payload<Types>: QueryablePayload<Types>,
Header<Types>: QueryableHeader<Types>,
P: AvailabilityProvider<Types>,
impl<Types: NodeType, P> FetchingDataSource<Types, FileSystemStorage<Types>, P>where
Payload<Types>: QueryablePayload<Types>,
Header<Types>: QueryableHeader<Types>,
P: AvailabilityProvider<Types>,
Sourcepub async fn create(path: &Path, provider: P) -> Result<Self>
pub async fn create(path: &Path, provider: P) -> Result<Self>
Create a new FileSystemDataSource with storage at path
.
If there is already data at path
, it will be archived.
The FileSystemDataSource will manage its own persistence synchronization.
Sourcepub async fn open(path: &Path, provider: P) -> Result<Self>
pub async fn open(path: &Path, provider: P) -> Result<Self>
Open an existing FileSystemDataSource from storage at path
.
If there is no data at path
, a new store will be created.
The FileSystemDataSource will manage its own persistence synchronization.
Sourcepub async fn create_with_store(
loader: &mut AtomicStoreLoader,
provider: P,
) -> Result<Self>
pub async fn create_with_store( loader: &mut AtomicStoreLoader, provider: P, ) -> Result<Self>
Create a new FileSystemDataSource using a persistent storage loader.
If there is existing data corresponding to the FileSystemDataSource data structures, it will be archived.
The FileSystemDataSource will register its persistent data structures with loader
. The
caller is responsible for creating an AtomicStore from loader
and managing synchronization of the store.
Sourcepub async fn open_with_store(
loader: &mut AtomicStoreLoader,
provider: P,
) -> Result<Self>
pub async fn open_with_store( loader: &mut AtomicStoreLoader, provider: P, ) -> Result<Self>
Open an existing FileSystemDataSource using a persistent storage loader.
If there is no existing data corresponding to the FileSystemDataSource data structures, a new store will be created.
The FileSystemDataSource will register its persistent data structures with loader
. The
caller is responsible for creating an AtomicStore from loader
and managing synchronization of the store.
Sourcepub async fn skip_version(&self) -> Result<()>
pub async fn skip_version(&self) -> Result<()>
Advance the version of the persistent store without committing changes to persistent state.
This function is useful when the AtomicStore synchronizing storage for this FileSystemDataSource is being managed by the caller. The caller may want to persist some changes to other modules whose state is managed by the same AtomicStore. In order to call AtomicStore::commit_version, the version of this FileSystemDataSource must be advanced, either by commit or, if there are no outstanding changes, skip_version.
Source§impl<Types, P: AvailabilityProvider<Types>> FetchingDataSource<Types, SqlStorage, P>where
Types: NodeType,
Header<Types>: QueryableHeader<Types>,
Payload<Types>: QueryablePayload<Types>,
impl<Types, P: AvailabilityProvider<Types>> FetchingDataSource<Types, SqlStorage, P>where
Types: NodeType,
Header<Types>: QueryableHeader<Types>,
Payload<Types>: QueryablePayload<Types>,
Sourcepub async fn connect(
config: Config,
provider: P,
) -> Result<Builder<Types, P>, Error>
pub async fn connect( config: Config, provider: P, ) -> Result<Builder<Types, P>, Error>
Connect to a remote database.
This function returns a fetching::Builder
which can be used to set options on the
underlying FetchingDataSource
, before constructing the SqlDataSource
with
build
. For a convenient constructor that uses the default
fetching options, see Config::connect
.
Trait Implementations§
Source§impl<Types, S, P> AsRef<S> for FetchingDataSource<Types, S, P>where
Types: NodeType,
impl<Types, S, P> AsRef<S> for FetchingDataSource<Types, S, P>where
Types: NodeType,
Source§impl<Types, S, P> AvailabilityDataSource<Types> for FetchingDataSource<Types, S, P>where
Types: NodeType,
Header<Types>: QueryableHeader<Types>,
Payload<Types>: QueryablePayload<Types>,
S: VersionedDataSource + 'static,
for<'a> S::Transaction<'a>: UpdateAvailabilityStorage<Types>,
for<'a> S::ReadOnly<'a>: AvailabilityStorage<Types> + NodeStorage<Types> + PrunedHeightStorage,
P: AvailabilityProvider<Types>,
impl<Types, S, P> AvailabilityDataSource<Types> for FetchingDataSource<Types, S, P>where
Types: NodeType,
Header<Types>: QueryableHeader<Types>,
Payload<Types>: QueryablePayload<Types>,
S: VersionedDataSource + 'static,
for<'a> S::Transaction<'a>: UpdateAvailabilityStorage<Types>,
for<'a> S::ReadOnly<'a>: AvailabilityStorage<Types> + NodeStorage<Types> + PrunedHeightStorage,
P: AvailabilityProvider<Types>,
fn get_leaf<'life0, 'async_trait, ID>( &'life0 self, id: ID, ) -> Pin<Box<dyn Future<Output = Fetch<LeafQueryData<Types>>> + Send + 'async_trait>>
fn get_header<'life0, 'async_trait, ID>( &'life0 self, id: ID, ) -> Pin<Box<dyn Future<Output = Fetch<Header<Types>>> + Send + 'async_trait>>
fn get_block<'life0, 'async_trait, ID>( &'life0 self, id: ID, ) -> Pin<Box<dyn Future<Output = Fetch<BlockQueryData<Types>>> + Send + 'async_trait>>
fn get_payload<'life0, 'async_trait, ID>( &'life0 self, id: ID, ) -> Pin<Box<dyn Future<Output = Fetch<PayloadQueryData<Types>>> + Send + 'async_trait>>
fn get_payload_metadata<'life0, 'async_trait, ID>( &'life0 self, id: ID, ) -> Pin<Box<dyn Future<Output = Fetch<PayloadMetadata<Types>>> + Send + 'async_trait>>
fn get_vid_common<'life0, 'async_trait, ID>( &'life0 self, id: ID, ) -> Pin<Box<dyn Future<Output = Fetch<VidCommonQueryData<Types>>> + Send + 'async_trait>>
fn get_vid_common_metadata<'life0, 'async_trait, ID>( &'life0 self, id: ID, ) -> Pin<Box<dyn Future<Output = Fetch<VidCommonMetadata<Types>>> + Send + 'async_trait>>
fn get_leaf_range<'life0, 'async_trait, R>(
&'life0 self,
range: R,
) -> Pin<Box<dyn Future<Output = FetchStream<LeafQueryData<Types>>> + Send + 'async_trait>>where
R: RangeBounds<usize> + Send + 'static + 'async_trait,
Self: 'async_trait,
'life0: 'async_trait,
fn get_block_range<'life0, 'async_trait, R>(
&'life0 self,
range: R,
) -> Pin<Box<dyn Future<Output = FetchStream<BlockQueryData<Types>>> + Send + 'async_trait>>where
R: RangeBounds<usize> + Send + 'static + 'async_trait,
Self: 'async_trait,
'life0: 'async_trait,
fn get_header_range<'life0, 'async_trait, R>(
&'life0 self,
range: R,
) -> Pin<Box<dyn Future<Output = FetchStream<Header<Types>>> + Send + 'async_trait>>where
R: RangeBounds<usize> + Send + 'static + 'async_trait,
Self: 'async_trait,
'life0: 'async_trait,
fn get_payload_range<'life0, 'async_trait, R>(
&'life0 self,
range: R,
) -> Pin<Box<dyn Future<Output = FetchStream<PayloadQueryData<Types>>> + Send + 'async_trait>>where
R: RangeBounds<usize> + Send + 'static + 'async_trait,
Self: 'async_trait,
'life0: 'async_trait,
fn get_payload_metadata_range<'life0, 'async_trait, R>(
&'life0 self,
range: R,
) -> Pin<Box<dyn Future<Output = FetchStream<PayloadMetadata<Types>>> + Send + 'async_trait>>where
R: RangeBounds<usize> + Send + 'static + 'async_trait,
Self: 'async_trait,
'life0: 'async_trait,
fn get_vid_common_range<'life0, 'async_trait, R>(
&'life0 self,
range: R,
) -> Pin<Box<dyn Future<Output = FetchStream<VidCommonQueryData<Types>>> + Send + 'async_trait>>where
R: RangeBounds<usize> + Send + 'static + 'async_trait,
Self: 'async_trait,
'life0: 'async_trait,
fn get_vid_common_metadata_range<'life0, 'async_trait, R>(
&'life0 self,
range: R,
) -> Pin<Box<dyn Future<Output = FetchStream<VidCommonMetadata<Types>>> + Send + 'async_trait>>where
R: RangeBounds<usize> + Send + 'static + 'async_trait,
Self: 'async_trait,
'life0: 'async_trait,
fn get_leaf_range_rev<'life0, 'async_trait>(
&'life0 self,
start: Bound<usize>,
end: usize,
) -> Pin<Box<dyn Future<Output = FetchStream<LeafQueryData<Types>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_block_range_rev<'life0, 'async_trait>(
&'life0 self,
start: Bound<usize>,
end: usize,
) -> Pin<Box<dyn Future<Output = FetchStream<BlockQueryData<Types>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_payload_range_rev<'life0, 'async_trait>(
&'life0 self,
start: Bound<usize>,
end: usize,
) -> Pin<Box<dyn Future<Output = FetchStream<PayloadQueryData<Types>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_payload_metadata_range_rev<'life0, 'async_trait>(
&'life0 self,
start: Bound<usize>,
end: usize,
) -> Pin<Box<dyn Future<Output = FetchStream<PayloadMetadata<Types>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_vid_common_range_rev<'life0, 'async_trait>(
&'life0 self,
start: Bound<usize>,
end: usize,
) -> Pin<Box<dyn Future<Output = FetchStream<VidCommonQueryData<Types>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_vid_common_metadata_range_rev<'life0, 'async_trait>(
&'life0 self,
start: Bound<usize>,
end: usize,
) -> Pin<Box<dyn Future<Output = FetchStream<VidCommonMetadata<Types>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_block_containing_transaction<'life0, 'async_trait>(
&'life0 self,
h: TransactionHash<Types>,
) -> Pin<Box<dyn Future<Output = Fetch<BlockWithTransaction<Types>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_state_cert<'life0, 'async_trait>(
&'life0 self,
epoch: u64,
) -> Pin<Box<dyn Future<Output = Fetch<StateCertQueryDataV2<Types>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn subscribe_blocks<'life0, 'async_trait>(
&'life0 self,
from: usize,
) -> Pin<Box<dyn Future<Output = BoxStream<'static, BlockQueryData<Types>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn subscribe_payloads<'life0, 'async_trait>(
&'life0 self,
from: usize,
) -> Pin<Box<dyn Future<Output = BoxStream<'static, PayloadQueryData<Types>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn subscribe_payload_metadata<'life0, 'async_trait>(
&'life0 self,
from: usize,
) -> Pin<Box<dyn Future<Output = BoxStream<'static, PayloadMetadata<Types>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn subscribe_leaves<'life0, 'async_trait>(
&'life0 self,
from: usize,
) -> Pin<Box<dyn Future<Output = BoxStream<'static, LeafQueryData<Types>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn subscribe_headers<'life0, 'async_trait>(
&'life0 self,
from: usize,
) -> Pin<Box<dyn Future<Output = BoxStream<'static, Header<Types>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn subscribe_vid_common<'life0, 'async_trait>(
&'life0 self,
from: usize,
) -> Pin<Box<dyn Future<Output = BoxStream<'static, VidCommonQueryData<Types>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn subscribe_vid_common_metadata<'life0, 'async_trait>(
&'life0 self,
from: usize,
) -> Pin<Box<dyn Future<Output = BoxStream<'static, VidCommonMetadata<Types>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
Source§impl<Types, S, P> Clone for FetchingDataSource<Types, S, P>where
Types: NodeType,
impl<Types, S, P> Clone for FetchingDataSource<Types, S, P>where
Types: NodeType,
Source§impl<Types, S, P> Debug for FetchingDataSource<Types, S, P>
impl<Types, S, P> Debug for FetchingDataSource<Types, S, P>
Source§impl<Types, S, P> ExplorerDataSource<Types> for FetchingDataSource<Types, S, P>where
Types: NodeType,
Payload<Types>: QueryablePayload<Types>,
Header<Types>: QueryableHeader<Types> + ExplorerHeader<Types>,
Transaction<Types>: ExplorerTransaction<Types>,
S: VersionedDataSource + 'static,
for<'a> S::ReadOnly<'a>: ExplorerStorage<Types>,
P: Send + Sync,
impl<Types, S, P> ExplorerDataSource<Types> for FetchingDataSource<Types, S, P>where
Types: NodeType,
Payload<Types>: QueryablePayload<Types>,
Header<Types>: QueryableHeader<Types> + ExplorerHeader<Types>,
Transaction<Types>: ExplorerTransaction<Types>,
S: VersionedDataSource + 'static,
for<'a> S::ReadOnly<'a>: ExplorerStorage<Types>,
P: Send + Sync,
Source§fn get_block_summaries<'life0, 'async_trait>(
&'life0 self,
request: GetBlockSummariesRequest<Types>,
) -> Pin<Box<dyn Future<Output = Result<Vec<BlockSummary<Types>>, GetBlockSummariesError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_block_summaries<'life0, 'async_trait>(
&'life0 self,
request: GetBlockSummariesRequest<Types>,
) -> Pin<Box<dyn Future<Output = Result<Vec<BlockSummary<Types>>, GetBlockSummariesError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
get_block_summaries
is a method that retrieves a list of block
summaries from the blockchain. The list is generated from the given
GetBlockSummariesRequest.Source§fn get_block_detail<'life0, 'async_trait>(
&'life0 self,
request: BlockIdentifier<Types>,
) -> Pin<Box<dyn Future<Output = Result<BlockDetail<Types>, GetBlockDetailError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_block_detail<'life0, 'async_trait>(
&'life0 self,
request: BlockIdentifier<Types>,
) -> Pin<Box<dyn Future<Output = Result<BlockDetail<Types>, GetBlockDetailError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
get_block_detail
is a method that retrieves the details of a specific
block from the blockchain. The block is identified by the given
BlockIdentifier.Source§fn get_transaction_summaries<'life0, 'async_trait>(
&'life0 self,
request: GetTransactionSummariesRequest<Types>,
) -> Pin<Box<dyn Future<Output = Result<Vec<TransactionSummary<Types>>, GetTransactionSummariesError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_transaction_summaries<'life0, 'async_trait>(
&'life0 self,
request: GetTransactionSummariesRequest<Types>,
) -> Pin<Box<dyn Future<Output = Result<Vec<TransactionSummary<Types>>, GetTransactionSummariesError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
get_transaction_summaries
is a method that retrieves a list of
transaction summaries from the blockchain. The list is generated from
the given GetTransactionSummariesRequest.Source§fn get_transaction_detail<'life0, 'async_trait>(
&'life0 self,
request: TransactionIdentifier<Types>,
) -> Pin<Box<dyn Future<Output = Result<TransactionDetailResponse<Types>, GetTransactionDetailError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_transaction_detail<'life0, 'async_trait>(
&'life0 self,
request: TransactionIdentifier<Types>,
) -> Pin<Box<dyn Future<Output = Result<TransactionDetailResponse<Types>, GetTransactionDetailError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
get_transaction_detail
is a method that retrieves the details of a
specific transaction from the blockchain. The transaction is identified
by the given TransactionIdentifier.Source§fn get_explorer_summary<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ExplorerSummary<Types>, GetExplorerSummaryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_explorer_summary<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ExplorerSummary<Types>, GetExplorerSummaryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
get_explorer_summary
is a method that retrieves a summary overview of
the blockchain. This is useful for displaying information that
indicates the overall status of the block chain.Source§fn get_search_results<'life0, 'async_trait>(
&'life0 self,
query: TaggedBase64,
) -> Pin<Box<dyn Future<Output = Result<SearchResult<Types>, GetSearchResultsError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_search_results<'life0, 'async_trait>(
&'life0 self,
query: TaggedBase64,
) -> Pin<Box<dyn Future<Output = Result<SearchResult<Types>, GetSearchResultsError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
get_search_results
is a method that retrieves the results of a search
query against the blockchain. The results are generated from the given
query string.Source§impl<Types, S, P> HasMetrics for FetchingDataSource<Types, S, P>where
Types: NodeType,
S: HasMetrics,
impl<Types, S, P> HasMetrics for FetchingDataSource<Types, S, P>where
Types: NodeType,
S: HasMetrics,
fn metrics(&self) -> &PrometheusMetrics
Source§impl<Types, S, P, State, const ARITY: usize> MerklizedStateDataSource<Types, State, ARITY> for FetchingDataSource<Types, S, P>where
Types: NodeType,
S: VersionedDataSource + 'static,
for<'a> S::ReadOnly<'a>: MerklizedStateStorage<Types, State, ARITY>,
P: Send + Sync,
State: MerklizedState<Types, ARITY> + 'static,
<State as MerkleTreeScheme>::Commitment: Send,
impl<Types, S, P, State, const ARITY: usize> MerklizedStateDataSource<Types, State, ARITY> for FetchingDataSource<Types, S, P>where
Types: NodeType,
S: VersionedDataSource + 'static,
for<'a> S::ReadOnly<'a>: MerklizedStateStorage<Types, State, ARITY>,
P: Send + Sync,
State: MerklizedState<Types, ARITY> + 'static,
<State as MerkleTreeScheme>::Commitment: Send,
Source§impl<Types, S, P> MerklizedStateHeightPersistence for FetchingDataSource<Types, S, P>where
Types: NodeType,
Header<Types>: QueryableHeader<Types>,
Payload<Types>: QueryablePayload<Types>,
S: VersionedDataSource + 'static,
for<'a> S::ReadOnly<'a>: MerklizedStateHeightStorage,
P: Send + Sync,
impl<Types, S, P> MerklizedStateHeightPersistence for FetchingDataSource<Types, S, P>where
Types: NodeType,
Header<Types>: QueryableHeader<Types>,
Payload<Types>: QueryablePayload<Types>,
S: VersionedDataSource + 'static,
for<'a> S::ReadOnly<'a>: MerklizedStateHeightStorage,
P: Send + Sync,
fn get_last_state_height<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§impl<Types, S, P> NodeDataSource<Types> for FetchingDataSource<Types, S, P>where
Types: NodeType,
Header<Types>: QueryableHeader<Types>,
S: VersionedDataSource + 'static,
for<'a> S::ReadOnly<'a>: NodeStorage<Types>,
P: Send + Sync,
impl<Types, S, P> NodeDataSource<Types> for FetchingDataSource<Types, S, P>where
Types: NodeType,
Header<Types>: QueryableHeader<Types>,
S: VersionedDataSource + 'static,
for<'a> S::ReadOnly<'a>: NodeStorage<Types>,
P: Send + Sync,
fn block_height<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn count_transactions_in_range<'life0, 'async_trait>(
&'life0 self,
range: impl 'async_trait + RangeBounds<usize> + Send,
namespace: Option<NamespaceId<Types>>,
) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn payload_size_in_range<'life0, 'async_trait>(
&'life0 self,
range: impl 'async_trait + RangeBounds<usize> + Send,
namespace: Option<NamespaceId<Types>>,
) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn sync_status<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = QueryResult<SyncStatus>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn sync_status<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = QueryResult<SyncStatus>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_header_window<'life0, 'async_trait>(
&'life0 self,
start: impl 'async_trait + Into<WindowStart<Types>> + Send + Sync,
end: u64,
limit: usize,
) -> Pin<Box<dyn Future<Output = QueryResult<TimeWindowQueryData<Header<Types>>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn count_transactions<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn payload_size<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
Source§impl<Types, S, P> PrunedHeightDataSource for FetchingDataSource<Types, S, P>where
Types: NodeType,
S: VersionedDataSource + HasMetrics + Send + Sync + 'static,
for<'a> S::ReadOnly<'a>: PrunedHeightStorage,
P: Send + Sync,
impl<Types, S, P> PrunedHeightDataSource for FetchingDataSource<Types, S, P>where
Types: NodeType,
S: VersionedDataSource + HasMetrics + Send + Sync + 'static,
for<'a> S::ReadOnly<'a>: PrunedHeightStorage,
P: Send + Sync,
Source§impl<Types, S, P> StatusDataSource for FetchingDataSource<Types, S, P>where
Types: NodeType,
Header<Types>: QueryableHeader<Types>,
S: VersionedDataSource + HasMetrics + Send + Sync + 'static,
for<'a> S::ReadOnly<'a>: NodeStorage<Types>,
P: Send + Sync,
impl<Types, S, P> StatusDataSource for FetchingDataSource<Types, S, P>where
Types: NodeType,
Header<Types>: QueryableHeader<Types>,
S: VersionedDataSource + HasMetrics + Send + Sync + 'static,
for<'a> S::ReadOnly<'a>: NodeStorage<Types>,
P: Send + Sync,
fn block_height<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn consensus_metrics(&self) -> QueryResult<PrometheusMetrics>
fn elapsed_time_since_last_decide<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = QueryResult<u64>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn success_rate<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = QueryResult<f64>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
Source§impl<Types, S, P> UpdateAvailabilityData<Types> for FetchingDataSource<Types, S, P>where
Types: NodeType,
Header<Types>: QueryableHeader<Types>,
Payload<Types>: QueryablePayload<Types>,
S: VersionedDataSource + 'static,
for<'a> S::Transaction<'a>: UpdateAvailabilityStorage<Types>,
for<'a> S::ReadOnly<'a>: AvailabilityStorage<Types> + NodeStorage<Types> + PrunedHeightStorage,
P: AvailabilityProvider<Types>,
impl<Types, S, P> UpdateAvailabilityData<Types> for FetchingDataSource<Types, S, P>where
Types: NodeType,
Header<Types>: QueryableHeader<Types>,
Payload<Types>: QueryablePayload<Types>,
S: VersionedDataSource + 'static,
for<'a> S::Transaction<'a>: UpdateAvailabilityStorage<Types>,
for<'a> S::ReadOnly<'a>: AvailabilityStorage<Types> + NodeStorage<Types> + PrunedHeightStorage,
P: AvailabilityProvider<Types>,
Source§impl<Types, S, P> VersionedDataSource for FetchingDataSource<Types, S, P>
impl<Types, S, P> VersionedDataSource for FetchingDataSource<Types, S, P>
Source§type Transaction<'a> = <S as VersionedDataSource>::Transaction<'a>
where
Self: 'a
type Transaction<'a> = <S as VersionedDataSource>::Transaction<'a> where Self: 'a
type ReadOnly<'a> = <S as VersionedDataSource>::ReadOnly<'a> where Self: 'a
Source§async fn write(&self) -> Result<Self::Transaction<'_>>
async fn write(&self) -> Result<Self::Transaction<'_>>
Auto Trait Implementations§
impl<Types, S, P> Freeze for FetchingDataSource<Types, S, P>
impl<Types, S, P> !RefUnwindSafe for FetchingDataSource<Types, S, P>
impl<Types, S, P> Send for FetchingDataSource<Types, S, P>
impl<Types, S, P> Sync for FetchingDataSource<Types, S, P>
impl<Types, S, P> Unpin for FetchingDataSource<Types, S, P>
impl<Types, S, P> !UnwindSafe for FetchingDataSource<Types, S, P>
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
§fn deserialize(
&self,
deserializer: &mut D,
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.