@@ -69,7 +69,7 @@ use priority_key::PriorityKey;
6969pub use super :: block:: { ImmutableBlock , MutableBlock } ;
7070
7171use super :: block:: {
72- nixl:: short_type_name, registry:: BlockRegistry , Block , BlockError , BlockMetadata ,
72+ nixl:: short_type_name, registry:: BlockRegistry , Block , BlockError , BlockMetadata , GlobalRegistry
7373} ;
7474use super :: events:: { EventManager , NullEventManager } ;
7575use super :: storage:: Storage ;
@@ -116,15 +116,18 @@ pub struct BlockPoolArgs<S: Storage, M: BlockMetadata> {
116116
117117 #[ builder( default ) ]
118118 blocks : Vec < Block < S , M > > ,
119+
120+ #[ builder( default ) ]
121+ global_pool : GlobalRegistry ,
119122}
120123
121124impl < S : Storage , M : BlockMetadata > BlockPoolArgsBuilder < S , M > {
122125 pub fn build ( self ) -> anyhow:: Result < BlockPool < S , M > > {
123126 let args = self . build_internal ( ) ?;
124- let ( event_manager, cancel_token, blocks) = args. dissolve ( ) ;
127+ let ( event_manager, cancel_token, blocks, global_pool ) = args. dissolve ( ) ;
125128
126129 tracing:: info!( "building block pool" ) ;
127- let pool = BlockPool :: new ( event_manager, cancel_token, blocks) ;
130+ let pool = BlockPool :: new ( event_manager, cancel_token, blocks, global_pool ) ;
128131
129132 Ok ( pool)
130133 }
@@ -200,9 +203,10 @@ impl<S: Storage, M: BlockMetadata> BlockPool<S, M> {
200203 event_manager : Arc < dyn EventManager > ,
201204 cancel_token : CancellationToken ,
202205 blocks : Vec < Block < S , M > > ,
206+ global_pool : GlobalRegistry ,
203207 ) -> Self {
204208 let ( pool, progress_engine) =
205- Self :: with_progress_engine ( event_manager, cancel_token, blocks) ;
209+ Self :: with_progress_engine ( event_manager, cancel_token, blocks, global_pool ) ;
206210
207211 // pool.runtime.handle().spawn(async move {
208212 // let mut progress_engine = progress_engine;
@@ -239,12 +243,19 @@ impl<S: Storage, M: BlockMetadata> BlockPool<S, M> {
239243 event_manager : Arc < dyn EventManager > ,
240244 cancel_token : CancellationToken ,
241245 blocks : Vec < Block < S , M > > ,
246+ global_pool : GlobalRegistry ,
242247 ) -> ( Self , ProgressEngine < S , M > ) {
243248 let ( priority_tx, priority_rx) = tokio:: sync:: mpsc:: unbounded_channel ( ) ;
244249 let ( ctrl_tx, ctrl_rx) = tokio:: sync:: mpsc:: unbounded_channel ( ) ;
245250
246- let progress_engine =
247- ProgressEngine :: < S , M > :: new ( event_manager, priority_rx, ctrl_rx, cancel_token, blocks) ;
251+ let progress_engine = ProgressEngine :: < S , M > :: new (
252+ event_manager,
253+ priority_rx,
254+ ctrl_rx,
255+ cancel_token,
256+ blocks,
257+ global_pool,
258+ ) ;
248259
249260 (
250261 Self {
@@ -468,9 +479,9 @@ mod tests {
468479 self ,
469480 ) -> anyhow:: Result < ( BlockPool < S , M > , ProgressEngine < S , M > ) > {
470481 let args = self . build_internal ( ) ?;
471- let ( event_manager, cancel_token, blocks) = args. dissolve ( ) ;
482+ let ( event_manager, cancel_token, blocks, global_pool ) = args. dissolve ( ) ;
472483 let ( pool, progress_engine) =
473- BlockPool :: with_progress_engine ( event_manager, cancel_token, blocks) ;
484+ BlockPool :: with_progress_engine ( event_manager, cancel_token, blocks, global_pool ) ;
474485
475486 Ok ( ( pool, progress_engine) )
476487 }
0 commit comments