@@ -19,7 +19,7 @@ use std::{
19
19
use rosidl_runtime_rs:: Message ;
20
20
21
21
use crate :: {
22
- rcl_bindings:: * , ActionClient , ActionServer , CancelResponse , Client , ClientBase , ClientOptions ,
22
+ rcl_bindings:: * , ActionClient , ActionClientBase , ActionServer , ActionServerBase , CancelResponse , Client , ClientBase , ClientOptions ,
23
23
ClientState , Clock , ContextHandle , GoalResponse , GoalUuid , GuardCondition , LogParams , Logger ,
24
24
ParameterBuilder , ParameterInterface , ParameterVariant , Parameters , Publisher ,
25
25
PublisherOptions , PublisherState , RclrsError , ServerGoalHandle , Service , ServiceBase ,
@@ -88,6 +88,8 @@ pub struct NodeState {
88
88
pub ( crate ) guard_conditions_mtx : Mutex < Vec < Weak < GuardCondition > > > ,
89
89
pub ( crate ) services_mtx : Mutex < Vec < Weak < dyn ServiceBase > > > ,
90
90
pub ( crate ) subscriptions_mtx : Mutex < Vec < Weak < dyn SubscriptionBase > > > ,
91
+ pub ( crate ) action_servers_mtx : Mutex < Vec < Weak < dyn ActionServerBase > > > ,
92
+ pub ( crate ) action_clients_mtx : Mutex < Vec < Weak < dyn ActionClientBase > > > ,
91
93
time_source : TimeSource ,
92
94
parameter : ParameterInterface ,
93
95
logger : Logger ,
@@ -282,7 +284,7 @@ impl NodeState {
282
284
T : rosidl_runtime_rs:: Service ,
283
285
{
284
286
let client = Arc :: new ( ClientState :: < T > :: new ( self , options) ?) ;
285
- { self . clients_mtx . lock ( ) . unwrap ( ) } . push ( Arc :: downgrade ( & client) as Weak < dyn ClientBase > ) ;
287
+ self . clients_mtx . lock ( ) . unwrap ( ) . push ( Arc :: downgrade ( & client) as Weak < dyn ClientBase > ) ;
286
288
Ok ( client)
287
289
}
288
290
@@ -298,8 +300,8 @@ impl NodeState {
298
300
T : rosidl_runtime_rs:: Action ,
299
301
{
300
302
let action_client = Arc :: new ( ActionClient :: < T > :: new ( self , topic) ?) ;
301
- // self.action_clients
302
- // .push(Arc::downgrade(&action_client) as Weak<dyn ActionClientBase>);
303
+ self . action_clients_mtx . lock ( ) . unwrap ( )
304
+ . push ( Arc :: downgrade ( & action_client) as Weak < dyn ActionClientBase > ) ;
303
305
Ok ( action_client)
304
306
}
305
307
@@ -328,8 +330,8 @@ impl NodeState {
328
330
handle_cancel,
329
331
handle_accepted,
330
332
) ?) ;
331
- // self.action_servers
332
- // .push(Arc::downgrade(&action_server) as Weak<dyn ActionClientBase >);
333
+ self . action_servers_mtx . lock ( ) . unwrap ( )
334
+ . push ( Arc :: downgrade ( & action_server) as Weak < dyn ActionServerBase > ) ;
333
335
Ok ( action_server)
334
336
}
335
337
@@ -346,7 +348,7 @@ impl NodeState {
346
348
Arc :: clone ( & self . handle . context_handle ) ,
347
349
None ,
348
350
) ) ;
349
- { self . guard_conditions_mtx . lock ( ) . unwrap ( ) }
351
+ self . guard_conditions_mtx . lock ( ) . unwrap ( )
350
352
. push ( Arc :: downgrade ( & guard_condition) as Weak < GuardCondition > ) ;
351
353
guard_condition
352
354
}
@@ -367,7 +369,7 @@ impl NodeState {
367
369
Arc :: clone ( & self . handle . context_handle ) ,
368
370
Some ( Box :: new ( callback) as Box < dyn Fn ( ) + Send + Sync > ) ,
369
371
) ) ;
370
- { self . guard_conditions_mtx . lock ( ) . unwrap ( ) }
372
+ self . guard_conditions_mtx . lock ( ) . unwrap ( )
371
373
. push ( Arc :: downgrade ( & guard_condition) as Weak < GuardCondition > ) ;
372
374
guard_condition
373
375
}
@@ -467,7 +469,7 @@ impl NodeState {
467
469
F : Fn ( & rmw_request_id_t , T :: Request ) -> T :: Response + ' static + Send ,
468
470
{
469
471
let service = Arc :: new ( ServiceState :: < T > :: new ( self , options, callback) ?) ;
470
- { self . services_mtx . lock ( ) . unwrap ( ) }
472
+ self . services_mtx . lock ( ) . unwrap ( )
471
473
. push ( Arc :: downgrade ( & service) as Weak < dyn ServiceBase > ) ;
472
474
Ok ( service)
473
475
}
@@ -522,36 +524,36 @@ impl NodeState {
522
524
T : Message ,
523
525
{
524
526
let subscription = Arc :: new ( SubscriptionState :: < T > :: new ( self , options, callback) ?) ;
525
- { self . subscriptions_mtx . lock ( ) }
527
+ self . subscriptions_mtx . lock ( )
526
528
. unwrap ( )
527
529
. push ( Arc :: downgrade ( & subscription) as Weak < dyn SubscriptionBase > ) ;
528
530
Ok ( subscription)
529
531
}
530
532
531
533
/// Returns the subscriptions that have not been dropped yet.
532
534
pub ( crate ) fn live_subscriptions ( & self ) -> Vec < Arc < dyn SubscriptionBase > > {
533
- { self . subscriptions_mtx . lock ( ) . unwrap ( ) }
535
+ self . subscriptions_mtx . lock ( ) . unwrap ( )
534
536
. iter ( )
535
537
. filter_map ( Weak :: upgrade)
536
538
. collect ( )
537
539
}
538
540
539
541
pub ( crate ) fn live_clients ( & self ) -> Vec < Arc < dyn ClientBase > > {
540
- { self . clients_mtx . lock ( ) . unwrap ( ) }
542
+ self . clients_mtx . lock ( ) . unwrap ( )
541
543
. iter ( )
542
544
. filter_map ( Weak :: upgrade)
543
545
. collect ( )
544
546
}
545
547
546
548
pub ( crate ) fn live_guard_conditions ( & self ) -> Vec < Arc < GuardCondition > > {
547
- { self . guard_conditions_mtx . lock ( ) . unwrap ( ) }
549
+ self . guard_conditions_mtx . lock ( ) . unwrap ( )
548
550
. iter ( )
549
551
. filter_map ( Weak :: upgrade)
550
552
. collect ( )
551
553
}
552
554
553
555
pub ( crate ) fn live_services ( & self ) -> Vec < Arc < dyn ServiceBase > > {
554
- { self . services_mtx . lock ( ) . unwrap ( ) }
556
+ self . services_mtx . lock ( ) . unwrap ( )
555
557
. iter ( )
556
558
. filter_map ( Weak :: upgrade)
557
559
. collect ( )
0 commit comments