moonpool_sim/sim/
wakers.rs

1//! Waker management for async coordination.
2//!
3//! This module provides the WakerRegistry for managing task wakers
4//! in the simulation environment.
5
6use std::collections::HashMap;
7use std::task::Waker;
8
9use crate::network::sim::{ConnectionId, ListenerId};
10
11/// Waker management for async coordination.
12#[derive(Debug, Default)]
13pub struct WakerRegistry {
14    #[allow(dead_code)] // Will be used for connection coordination in future phases
15    pub(crate) connection_wakers: HashMap<ConnectionId, Waker>,
16    pub(crate) listener_wakers: HashMap<ListenerId, Waker>,
17    pub(crate) read_wakers: HashMap<ConnectionId, Waker>,
18    pub(crate) task_wakers: HashMap<u64, Waker>,
19    /// Wakers waiting for write clog to clear
20    pub(crate) clog_wakers: HashMap<ConnectionId, Vec<Waker>>,
21    /// Wakers waiting for read clog to clear
22    pub(crate) read_clog_wakers: HashMap<ConnectionId, Vec<Waker>>,
23    /// Wakers waiting for cut connections to be restored
24    pub(crate) cut_wakers: HashMap<ConnectionId, Vec<Waker>>,
25    /// Wakers waiting for send buffer space to become available
26    pub(crate) send_buffer_wakers: HashMap<ConnectionId, Vec<Waker>>,
27}