diff --git a/dash-spv/src/client/lifecycle.rs b/dash-spv/src/client/lifecycle.rs index b4b01465e..d4d0bc374 100644 --- a/dash-spv/src/client/lifecycle.rs +++ b/dash-spv/src/client/lifecycle.rs @@ -60,7 +60,6 @@ impl DashSpvClient = Managers::default(); - let header_storage = storage.header_storage_ref().expect("Headers storage must exist"); let checkpoints = match config.network { dashcore::Network::Dash => mainnet_checkpoints(), dashcore::Network::Testnet => testnet_checkpoints(), @@ -68,31 +67,19 @@ impl DashSpvClient DashSpvClient Option>> { - None - } + /// Returns shared access to the block headers storage. + fn block_headers(&self) -> Arc>; - /// Get shared reference to filter header storage for parallel access. - fn filter_header_storage_ref(&self) -> Option>> { - None - } + /// Returns shared access to the filter headers storage. + fn filter_headers(&self) -> Arc>; - /// Get shared reference to filter storage for parallel access. - fn filter_storage_ref(&self) -> Option>> { - None - } + /// Returns shared access to the filters storage. + fn filters(&self) -> Arc>; - /// Get shared reference to block storage for parallel access. - fn block_storage_ref(&self) -> Option>> { - None - } + /// Returns shared access to the block storage. + fn blocks(&self) -> Arc>; } /// Disk-based storage manager with segmented files and async background saving. @@ -203,41 +195,6 @@ impl DiskStorageManager { } } - /// Get a reference to the block headers storage. - pub fn header_storage(&self) -> Arc> { - Arc::clone(&self.block_headers) - } - - /// Get a reference to the filter headers storage. - pub fn filter_header_storage(&self) -> Arc> { - Arc::clone(&self.filter_headers) - } - - /// Get a reference to the filters storage. - pub fn filter_storage(&self) -> Arc> { - Arc::clone(&self.filters) - } - - /// Get a reference to the block storage. - pub fn block_storage(&self) -> Arc> { - Arc::clone(&self.blocks) - } - - /// Get a reference to the transaction storage. - pub fn transaction_storage(&self) -> Arc> { - Arc::clone(&self.transactions) - } - - /// Get a reference to the metadata storage. - pub fn metadata_storage(&self) -> Arc> { - Arc::clone(&self.metadata) - } - - /// Get a reference to the masternode state storage. - pub fn masternode_storage(&self) -> Arc> { - Arc::clone(&self.masternodestate) - } - async fn persist(&self) { let storage_path = &self.storage_path; @@ -302,20 +259,20 @@ impl StorageManager for DiskStorageManager { self.persist().await; } - fn header_storage_ref(&self) -> Option>> { - Some(Arc::clone(&self.block_headers)) + fn block_headers(&self) -> Arc> { + Arc::clone(&self.block_headers) } - fn filter_header_storage_ref(&self) -> Option>> { - Some(Arc::clone(&self.filter_headers)) + fn filter_headers(&self) -> Arc> { + Arc::clone(&self.filter_headers) } - fn filter_storage_ref(&self) -> Option>> { - Some(Arc::clone(&self.filters)) + fn filters(&self) -> Arc> { + Arc::clone(&self.filters) } - fn block_storage_ref(&self) -> Option>> { - Some(Arc::clone(&self.blocks)) + fn blocks(&self) -> Arc> { + Arc::clone(&self.blocks) } } diff --git a/dash-spv/src/sync/block_headers/manager.rs b/dash-spv/src/sync/block_headers/manager.rs index 3655b9eea..29a19bdc1 100644 --- a/dash-spv/src/sync/block_headers/manager.rs +++ b/dash-spv/src/sync/block_headers/manager.rs @@ -217,7 +217,7 @@ mod tests { use super::*; use crate::chain::checkpoints::testnet_checkpoints; use crate::network::MessageType; - use crate::storage::{DiskStorageManager, PersistentBlockHeaderStorage}; + use crate::storage::{DiskStorageManager, PersistentBlockHeaderStorage, StorageManager}; use crate::sync::{ManagerIdentifier, SyncManagerProgress}; type TestBlockHeadersManager = BlockHeadersManager; @@ -229,7 +229,7 @@ mod tests { async fn create_test_manager() -> TestBlockHeadersManager { let storage = DiskStorageManager::with_temp_dir().await.unwrap(); let checkpoint_manager = create_test_checkpoint_manager(); - BlockHeadersManager::new(storage.header_storage(), checkpoint_manager) + BlockHeadersManager::new(storage.block_headers(), checkpoint_manager) } #[tokio::test] diff --git a/dash-spv/src/sync/blocks/manager.rs b/dash-spv/src/sync/blocks/manager.rs index 8e6ad8a92..66a2a92b4 100644 --- a/dash-spv/src/sync/blocks/manager.rs +++ b/dash-spv/src/sync/blocks/manager.rs @@ -155,7 +155,7 @@ mod tests { use super::*; use crate::network::{MessageType, NetworkManager}; use crate::storage::{ - DiskStorageManager, PersistentBlockHeaderStorage, PersistentBlockStorage, + DiskStorageManager, PersistentBlockHeaderStorage, PersistentBlockStorage, StorageManager, }; use crate::sync::{ManagerIdentifier, SyncEvent, SyncManagerProgress}; use crate::test_utils::MockNetworkManager; @@ -170,7 +170,7 @@ mod tests { async fn create_test_manager() -> TestBlocksManager { let storage = DiskStorageManager::with_temp_dir().await.unwrap(); let wallet = Arc::new(RwLock::new(MockWallet::new())); - BlocksManager::new(wallet, storage.header_storage(), storage.block_storage()) + BlocksManager::new(wallet, storage.block_headers(), storage.blocks()) } #[tokio::test] diff --git a/dash-spv/src/sync/chainlock/manager.rs b/dash-spv/src/sync/chainlock/manager.rs index cab3c25b2..5fca675a4 100644 --- a/dash-spv/src/sync/chainlock/manager.rs +++ b/dash-spv/src/sync/chainlock/manager.rs @@ -191,7 +191,7 @@ impl std::fmt::Debug for ChainLockManager { mod tests { use super::*; use crate::network::MessageType; - use crate::storage::{DiskStorageManager, PersistentBlockHeaderStorage}; + use crate::storage::{DiskStorageManager, PersistentBlockHeaderStorage, StorageManager}; use crate::sync::{ManagerIdentifier, SyncManager, SyncManagerProgress, SyncState}; use crate::Network; use dashcore::bls_sig_utils::BLSSignature; @@ -204,7 +204,7 @@ mod tests { let storage = DiskStorageManager::with_temp_dir().await.unwrap(); let engine = Arc::new(RwLock::new(MasternodeListEngine::default_for_network(Network::Testnet))); - ChainLockManager::new(storage.header_storage(), engine) + ChainLockManager::new(storage.block_headers(), engine) } fn create_test_chainlock(height: u32) -> ChainLock { diff --git a/dash-spv/src/sync/filter_headers/manager.rs b/dash-spv/src/sync/filter_headers/manager.rs index 9f051acc8..58ff525f2 100644 --- a/dash-spv/src/sync/filter_headers/manager.rs +++ b/dash-spv/src/sync/filter_headers/manager.rs @@ -230,6 +230,7 @@ mod tests { use crate::network::MessageType; use crate::storage::{ DiskStorageManager, PersistentBlockHeaderStorage, PersistentFilterHeaderStorage, + StorageManager, }; use crate::sync::{ManagerIdentifier, SyncManagerProgress}; @@ -239,7 +240,7 @@ mod tests { async fn create_test_manager() -> TestFilterHeadersManager { let storage = DiskStorageManager::with_temp_dir().await.unwrap(); - FilterHeadersManager::new(storage.header_storage(), storage.filter_header_storage()) + FilterHeadersManager::new(storage.block_headers(), storage.filter_headers()) } #[tokio::test] diff --git a/dash-spv/src/sync/filters/manager.rs b/dash-spv/src/sync/filters/manager.rs index 5d4b2a5f1..c16713a4f 100644 --- a/dash-spv/src/sync/filters/manager.rs +++ b/dash-spv/src/sync/filters/manager.rs @@ -765,7 +765,7 @@ mod tests { use crate::network::MessageType; use crate::storage::{ DiskStorageManager, PersistentBlockHeaderStorage, PersistentFilterHeaderStorage, - PersistentFilterStorage, + PersistentFilterStorage, StorageManager, }; use crate::sync::{ManagerIdentifier, SyncManagerProgress}; use key_wallet_manager::test_utils::MockWallet; @@ -783,9 +783,9 @@ mod tests { let wallet = Arc::new(RwLock::new(MockWallet::new())); FiltersManager::new( wallet, - storage.header_storage(), - storage.filter_header_storage(), - storage.filter_storage(), + storage.block_headers(), + storage.filter_headers(), + storage.filters(), ) } diff --git a/dash-spv/src/sync/masternodes/manager.rs b/dash-spv/src/sync/masternodes/manager.rs index 8ecbfa013..8b6d2959f 100644 --- a/dash-spv/src/sync/masternodes/manager.rs +++ b/dash-spv/src/sync/masternodes/manager.rs @@ -213,7 +213,7 @@ impl std::fmt::Debug for MasternodesManager { mod tests { use super::*; use crate::network::MessageType; - use crate::storage::{DiskStorageManager, PersistentBlockHeaderStorage}; + use crate::storage::{DiskStorageManager, PersistentBlockHeaderStorage, StorageManager}; use crate::sync::sync_manager::SyncManager; use crate::sync::{ManagerIdentifier, SyncManagerProgress}; @@ -224,7 +224,7 @@ mod tests { let engine = Arc::new(RwLock::new(MasternodeListEngine::default_for_network( dashcore::Network::Testnet, ))); - MasternodesManager::new(storage.header_storage(), engine, dashcore::Network::Testnet) + MasternodesManager::new(storage.block_headers(), engine, dashcore::Network::Testnet) } #[tokio::test]