copy_trading/position_manager/
start.rs

1use std::sync::Arc;
2
3use crate::types::position_manager::PositionManager;
4
5impl PositionManager {
6  /// Start all async monitoring loops for the position manager. Spawns three separate async
7  /// tasks: market update loop, transaction monitor loop, and new pool loop to handle different 
8  /// event streams concurrently.
9  pub fn start(position_manager: &Arc<PositionManager>) {
10    // println!("POSITION_MANAGER: Starting position manager loops...");
11
12    // Spawn the three main loops
13    let p = position_manager.clone();
14    tokio::spawn(async move {
15      PositionManager::market_update_loop(p).await;
16    });
17    
18    let p = position_manager.clone();
19    tokio::spawn(async move {
20      PositionManager::tx_monitor_loop(p).await;
21    });
22
23    let p = position_manager.clone();   
24    tokio::spawn(async move {
25      PositionManager::new_pool_loop(p).await;
26    });
27
28    // println!("POSITION_MANAGER: All loops started successfully");
29  }
30}