From 387ce3efae8c453b3b251c8a686551ed26e8a97c Mon Sep 17 00:00:00 2001 From: unitezen Date: Tue, 20 Aug 2024 14:22:08 +0700 Subject: [PATCH] feat(provider): implement `ForkChoiceSubscriptions` for `BlockchainProvider2` (#10318) --- .../src/providers/blockchain_provider.rs | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/crates/storage/provider/src/providers/blockchain_provider.rs b/crates/storage/provider/src/providers/blockchain_provider.rs index 1084d11c47..521e064930 100644 --- a/crates/storage/provider/src/providers/blockchain_provider.rs +++ b/crates/storage/provider/src/providers/blockchain_provider.rs @@ -8,7 +8,10 @@ use crate::{ StaticFileProviderFactory, TransactionVariant, TransactionsProvider, WithdrawalsProvider, }; use alloy_rpc_types_engine::ForkchoiceState; -use reth_chain_state::{BlockState, CanonicalInMemoryState, MemoryOverlayStateProvider}; +use reth_chain_state::{ + BlockState, CanonicalInMemoryState, ForkChoiceNotifications, ForkChoiceSubscriptions, + MemoryOverlayStateProvider, +}; use reth_chainspec::{ChainInfo, ChainSpec}; use reth_db_api::{ database::Database, @@ -1428,6 +1431,21 @@ where } } +impl ForkChoiceSubscriptions for BlockchainProvider2 +where + DB: Send + Sync, +{ + fn subscribe_to_safe_block(&self) -> ForkChoiceNotifications { + let receiver = self.canonical_in_memory_state.subscribe_safe_block(); + ForkChoiceNotifications(receiver) + } + + fn subscribe_to_finalized_block(&self) -> ForkChoiceNotifications { + let receiver = self.canonical_in_memory_state.subscribe_finalized_block(); + ForkChoiceNotifications(receiver) + } +} + impl ChangeSetReader for BlockchainProvider2 where DB: Database,