From 60c33787aa729b1adf442527775d1b6b55324628 Mon Sep 17 00:00:00 2001 From: xdustinface Date: Thu, 4 Dec 2025 11:31:45 +1100 Subject: [PATCH] refactor: Rename `SequentialSyncManager` to `SyncManager` --- dash-spv/ARCHITECTURE.md | 6 +++--- dash-spv/CLAUDE.md | 6 +++--- dash-spv/src/client/core.rs | 8 ++++---- dash-spv/src/client/filter_sync.rs | 6 +++--- dash-spv/src/client/lifecycle.rs | 4 ++-- dash-spv/src/client/message_handler.rs | 6 +++--- dash-spv/src/client/message_handler_test.rs | 6 +++--- dash-spv/src/sync/sequential/lifecycle.rs | 6 +++--- dash-spv/src/sync/sequential/manager.rs | 6 +++--- dash-spv/src/sync/sequential/message_handlers.rs | 4 ++-- dash-spv/src/sync/sequential/mod.rs | 2 +- dash-spv/src/sync/sequential/phase_execution.rs | 4 ++-- dash-spv/src/sync/sequential/post_sync.rs | 4 ++-- 13 files changed, 34 insertions(+), 34 deletions(-) diff --git a/dash-spv/ARCHITECTURE.md b/dash-spv/ARCHITECTURE.md index 7a50fe59a..b6260eb1f 100644 --- a/dash-spv/ARCHITECTURE.md +++ b/dash-spv/ARCHITECTURE.md @@ -92,7 +92,7 @@ │ ▼ ┌─────────────────────────────────────────┐ - │ SequentialSyncManager │ + │ SyncManager │ │ - HeadersSync │ │ - MasternodeSync │ │ - FilterSync (4,027 lines - TOO BIG) │ @@ -108,7 +108,7 @@ ### Data Flow ``` -Network Messages → MessageHandler → SequentialSyncManager +Network Messages → MessageHandler → SyncManager │ ▼ ┌─────────────────────┐ @@ -1011,7 +1011,7 @@ The sync module coordinates all blockchain synchronization. This is the most com ``` sync/sequential/ (4,785 lines total across 11 modules) ├── mod.rs (52 lines) - Module coordinator and re-exports -├── manager.rs (234 lines) - Core SequentialSyncManager struct and accessors +├── manager.rs (234 lines) - Core SyncManager struct and accessors ├── lifecycle.rs (225 lines) - Initialization, startup, and shutdown ├── phase_execution.rs (519 lines) - Phase execution, transitions, timeout handling ├── message_handlers.rs (808 lines) - Handlers for sync phase messages diff --git a/dash-spv/CLAUDE.md b/dash-spv/CLAUDE.md index 490ea7cae..c3e29a717 100644 --- a/dash-spv/CLAUDE.md +++ b/dash-spv/CLAUDE.md @@ -24,7 +24,7 @@ The project follows a layered, trait-based architecture with clear separation of ### Key Design Patterns - **Trait-based abstractions**: `NetworkManager`, `StorageManager` for swappable implementations - **Async/await throughout**: Built on tokio runtime -- **Sequential sync**: Uses `SequentialSyncManager` for organized phase-based synchronization +- **Sequential sync**: Uses `SyncManager` for organized phase-based synchronization - **State management**: Each sync phase tracked independently with clear state transitions - **Modular validation**: Configurable validation modes (None/Basic/Full) @@ -97,7 +97,7 @@ cargo check --all-features ## Key Concepts ### Sync Coordination -The `SequentialSyncManager` coordinates all synchronization through a phase-based approach: +The `SyncManager` coordinates all synchronization through a phase-based approach: - **Phase 1: Headers** - Synchronize blockchain headers - **Phase 2: Masternode List** - Download masternode state - **Phase 3: Filter Headers** - Synchronize compact filter headers @@ -157,7 +157,7 @@ Basic wallet functionality for address monitoring: The sync system uses a sequential phase-based pattern: 1. Create `DashSpvClient` with desired configuration 2. Call `start()` to begin synchronization -3. The client internally uses `SequentialSyncManager` to progress through sync phases +3. The client internally uses `SyncManager` to progress through sync phases 4. Monitor progress via `get_sync_progress()` or progress receiver 5. Each phase completes before the next begins diff --git a/dash-spv/src/client/core.rs b/dash-spv/src/client/core.rs index 30b5fcd63..e25f8dd59 100644 --- a/dash-spv/src/client/core.rs +++ b/dash-spv/src/client/core.rs @@ -20,7 +20,7 @@ use crate::mempool_filter::MempoolFilter; use crate::network::NetworkManager; use crate::storage::StorageManager; use crate::sync::filters::FilterNotificationSender; -use crate::sync::sequential::SequentialSyncManager; +use crate::sync::sequential::SyncManager; use crate::types::{ChainState, DetailedSyncProgress, MempoolState, SpvEvent, SpvStats}; use crate::validation::ValidationManager; use key_wallet_manager::wallet_interface::WalletInterface; @@ -127,12 +127,12 @@ pub struct DashSpvClient>) + /// - Using interior mutability patterns (Arc>) /// - Extracting read-only state into a separate shared structure /// - Implementing a message-passing architecture for sync commands /// /// The current design prioritizes simplicity and correctness over concurrent access. - pub(super) sync_manager: SequentialSyncManager, + pub(super) sync_manager: SyncManager, pub(super) validation: ValidationManager, pub(super) chainlock_manager: Arc, pub(super) running: Arc>, @@ -179,7 +179,7 @@ impl< /// Get mutable reference to sync manager (for testing). #[cfg(test)] - pub fn sync_manager_mut(&mut self) -> &mut SequentialSyncManager { + pub fn sync_manager_mut(&mut self) -> &mut SyncManager { &mut self.sync_manager } diff --git a/dash-spv/src/client/filter_sync.rs b/dash-spv/src/client/filter_sync.rs index 3bfaaab8e..fb6b35fcb 100644 --- a/dash-spv/src/client/filter_sync.rs +++ b/dash-spv/src/client/filter_sync.rs @@ -3,7 +3,7 @@ use crate::error::{Result, SpvError}; use crate::network::NetworkManager; use crate::storage::StorageManager; -use crate::sync::sequential::SequentialSyncManager; +use crate::sync::sequential::SyncManager; use crate::types::FilterMatch; use crate::types::SpvStats; use key_wallet_manager::wallet_interface::WalletInterface; @@ -12,7 +12,7 @@ use tokio::sync::RwLock; /// Filter synchronization manager for coordinating filter downloads and checking. pub struct FilterSyncCoordinator<'a, S: StorageManager, N: NetworkManager, W: WalletInterface> { - sync_manager: &'a mut SequentialSyncManager, + sync_manager: &'a mut SyncManager, storage: &'a mut S, network: &'a mut N, stats: &'a Arc>, @@ -28,7 +28,7 @@ impl< { /// Create a new filter sync coordinator. pub fn new( - sync_manager: &'a mut SequentialSyncManager, + sync_manager: &'a mut SyncManager, storage: &'a mut S, network: &'a mut N, stats: &'a Arc>, diff --git a/dash-spv/src/client/lifecycle.rs b/dash-spv/src/client/lifecycle.rs index 3c27c0c0c..838cef5b6 100644 --- a/dash-spv/src/client/lifecycle.rs +++ b/dash-spv/src/client/lifecycle.rs @@ -17,7 +17,7 @@ use crate::error::{Result, SpvError}; use crate::mempool_filter::MempoolFilter; use crate::network::NetworkManager; use crate::storage::StorageManager; -use crate::sync::sequential::SequentialSyncManager; +use crate::sync::sequential::SyncManager; use crate::types::{ChainState, MempoolState, SpvStats}; use crate::validation::ValidationManager; use dashcore::network::constants::NetworkExt; @@ -52,7 +52,7 @@ impl< // Create sync manager let received_filter_heights = stats.read().await.received_filter_heights.clone(); tracing::info!("Creating sequential sync manager"); - let sync_manager = SequentialSyncManager::new( + let sync_manager = SyncManager::new( &config, received_filter_heights, wallet.clone(), diff --git a/dash-spv/src/client/message_handler.rs b/dash-spv/src/client/message_handler.rs index 258f42d77..523988c10 100644 --- a/dash-spv/src/client/message_handler.rs +++ b/dash-spv/src/client/message_handler.rs @@ -5,7 +5,7 @@ use crate::error::{Result, SpvError}; use crate::mempool_filter::MempoolFilter; use crate::network::NetworkManager; use crate::storage::StorageManager; -use crate::sync::sequential::SequentialSyncManager; +use crate::sync::sequential::SyncManager; use crate::types::{MempoolState, SpvEvent, SpvStats}; // Removed local ad-hoc compact filter construction in favor of always processing full blocks use key_wallet_manager::wallet_interface::WalletInterface; @@ -14,7 +14,7 @@ use tokio::sync::RwLock; /// Network message handler for processing incoming Dash protocol messages. pub struct MessageHandler<'a, S: StorageManager, N: NetworkManager, W: WalletInterface> { - sync_manager: &'a mut SequentialSyncManager, + sync_manager: &'a mut SyncManager, storage: &'a mut S, network: &'a mut N, config: &'a ClientConfig, @@ -35,7 +35,7 @@ impl< /// Create a new message handler. #[allow(clippy::too_many_arguments)] pub fn new( - sync_manager: &'a mut SequentialSyncManager, + sync_manager: &'a mut SyncManager, storage: &'a mut S, network: &'a mut N, config: &'a ClientConfig, diff --git a/dash-spv/src/client/message_handler_test.rs b/dash-spv/src/client/message_handler_test.rs index 1435fc600..04b4d10be 100644 --- a/dash-spv/src/client/message_handler_test.rs +++ b/dash-spv/src/client/message_handler_test.rs @@ -12,7 +12,7 @@ mod tests { use crate::storage::memory::MemoryStorageManager; use crate::storage::StorageManager; use crate::sync::filters::FilterNotificationSender; - use crate::sync::sequential::SequentialSyncManager; + use crate::sync::sequential::SyncManager; use crate::types::{ChainState, MempoolState, SpvEvent, SpvStats}; use crate::validation::ValidationManager; use crate::wallet::Wallet; @@ -29,7 +29,7 @@ mod tests { async fn setup_test_components() -> ( Box, Box, - SequentialSyncManager, + SyncManager, ClientConfig, Arc>, Option, @@ -52,7 +52,7 @@ mod tests { // Create sync manager let received_filter_heights = Arc::new(Mutex::new(HashSet::new())); - let sync_manager = SequentialSyncManager::new(&config, received_filter_heights).unwrap(); + let sync_manager = SyncManager::new(&config, received_filter_heights).unwrap(); ( network, diff --git a/dash-spv/src/sync/sequential/lifecycle.rs b/dash-spv/src/sync/sequential/lifecycle.rs index 84f6663ae..ea43b3566 100644 --- a/dash-spv/src/sync/sequential/lifecycle.rs +++ b/dash-spv/src/sync/sequential/lifecycle.rs @@ -1,4 +1,4 @@ -//! Lifecycle management for SequentialSyncManager (initialization, startup, shutdown). +//! Lifecycle management for SyncManager (initialization, startup, shutdown). use std::time::{Duration, Instant}; @@ -14,7 +14,7 @@ use key_wallet_manager::{wallet_interface::WalletInterface, Network as WalletNet use std::sync::Arc; use tokio::sync::RwLock; -use super::manager::SequentialSyncManager; +use super::manager::SyncManager; use super::phases::SyncPhase; use super::transitions::TransitionManager; @@ -22,7 +22,7 @@ impl< S: StorageManager + Send + Sync + 'static, N: NetworkManager + Send + Sync + 'static, W: WalletInterface, - > SequentialSyncManager + > SyncManager { /// Create a new sequential sync manager pub fn new( diff --git a/dash-spv/src/sync/sequential/manager.rs b/dash-spv/src/sync/sequential/manager.rs index 976182e59..04ba850a0 100644 --- a/dash-spv/src/sync/sequential/manager.rs +++ b/dash-spv/src/sync/sequential/manager.rs @@ -1,4 +1,4 @@ -//! Core SequentialSyncManager struct and simple accessor methods. +//! Core SyncManager struct and simple accessor methods. use std::time::{Duration, Instant}; @@ -58,7 +58,7 @@ pub(super) const CHAINLOCK_VALIDATION_MASTERNODE_OFFSET: u32 = 8; /// The generic design enables comprehensive testing while maintaining zero-cost abstraction. /// /// [`DashSpvClient`]: crate::client::DashSpvClient -pub struct SequentialSyncManager { +pub struct SyncManager { pub(super) _phantom_s: std::marker::PhantomData, pub(super) _phantom_n: std::marker::PhantomData, /// Current synchronization phase @@ -101,7 +101,7 @@ impl< S: StorageManager + Send + Sync + 'static, N: NetworkManager + Send + Sync + 'static, W: WalletInterface, - > SequentialSyncManager + > SyncManager { /// Get the current chain height from the header sync manager pub fn get_chain_height(&self) -> u32 { diff --git a/dash-spv/src/sync/sequential/message_handlers.rs b/dash-spv/src/sync/sequential/message_handlers.rs index 7c9a633b8..a9763e4e2 100644 --- a/dash-spv/src/sync/sequential/message_handlers.rs +++ b/dash-spv/src/sync/sequential/message_handlers.rs @@ -13,14 +13,14 @@ use crate::storage::StorageManager; use crate::types::PeerId; use key_wallet_manager::wallet_interface::WalletInterface; -use super::manager::SequentialSyncManager; +use super::manager::SyncManager; use super::phases::SyncPhase; impl< S: StorageManager + Send + Sync + 'static, N: NetworkManager + Send + Sync + 'static, W: WalletInterface, - > SequentialSyncManager + > SyncManager { /// Handle incoming network messages with phase filtering pub async fn handle_message( diff --git a/dash-spv/src/sync/sequential/mod.rs b/dash-spv/src/sync/sequential/mod.rs index 6478a3871..9b96fd6b1 100644 --- a/dash-spv/src/sync/sequential/mod.rs +++ b/dash-spv/src/sync/sequential/mod.rs @@ -42,6 +42,6 @@ pub mod phases; pub mod transitions; // Re-exports -pub use manager::SequentialSyncManager; +pub use manager::SyncManager; pub use phases::{PhaseTransition, SyncPhase}; pub use transitions::TransitionManager; diff --git a/dash-spv/src/sync/sequential/phase_execution.rs b/dash-spv/src/sync/sequential/phase_execution.rs index 308550d2f..4e76d0ea4 100644 --- a/dash-spv/src/sync/sequential/phase_execution.rs +++ b/dash-spv/src/sync/sequential/phase_execution.rs @@ -7,14 +7,14 @@ use crate::network::NetworkManager; use crate::storage::StorageManager; use key_wallet_manager::wallet_interface::WalletInterface; -use super::manager::SequentialSyncManager; +use super::manager::SyncManager; use super::phases::SyncPhase; impl< S: StorageManager + Send + Sync + 'static, N: NetworkManager + Send + Sync + 'static, W: WalletInterface, - > SequentialSyncManager + > SyncManager { /// Execute the current sync phase pub(super) async fn execute_current_phase( diff --git a/dash-spv/src/sync/sequential/post_sync.rs b/dash-spv/src/sync/sequential/post_sync.rs index 016d04747..f10ae21a0 100644 --- a/dash-spv/src/sync/sequential/post_sync.rs +++ b/dash-spv/src/sync/sequential/post_sync.rs @@ -10,14 +10,14 @@ use crate::network::NetworkManager; use crate::storage::StorageManager; use key_wallet_manager::wallet_interface::WalletInterface; -use super::manager::{SequentialSyncManager, CHAINLOCK_VALIDATION_MASTERNODE_OFFSET}; +use super::manager::{SyncManager, CHAINLOCK_VALIDATION_MASTERNODE_OFFSET}; use super::phases::SyncPhase; impl< S: StorageManager + Send + Sync + 'static, N: NetworkManager + Send + Sync + 'static, W: WalletInterface, - > SequentialSyncManager + > SyncManager { /// Handle inventory messages for sequential sync pub async fn handle_inventory(