@@ -13,11 +13,11 @@ use rosidl_runtime_rs::Message;
13
13
14
14
pub use self :: { builder:: * , graph:: * } ;
15
15
use crate :: {
16
- rcl_bindings:: * , ActionClient , ActionClientBase , ActionServer , ActionServerBase , CancelResponse , Client , ClientBase , Clock ,
17
- Context , ContextHandle , GoalResponse , GoalUuid , GuardCondition , ParameterBuilder ,
18
- ParameterInterface , ParameterVariant , Parameters , Publisher , QoSProfile , RclrsError ,
19
- ServerGoalHandle , Service , ServiceBase , Subscription , SubscriptionBase , SubscriptionCallback ,
20
- TimeSource , ENTITY_LIFECYCLE_MUTEX ,
16
+ rcl_bindings:: * , ActionClient , ActionClientBase , ActionServer , ActionServerBase ,
17
+ CancelResponse , Client , ClientBase , Clock , Context , ContextHandle , GoalResponse , GoalUuid ,
18
+ GuardCondition , ParameterBuilder , ParameterInterface , ParameterVariant , Parameters , Publisher ,
19
+ QoSProfile , RclrsError , ServerGoalHandle , Service , ServiceBase , Subscription , SubscriptionBase ,
20
+ SubscriptionCallback , TimeSource , ENTITY_LIFECYCLE_MUTEX ,
21
21
} ;
22
22
23
23
// SAFETY: The functions accessing this type, including drop(), shouldn't care about the thread
@@ -209,7 +209,10 @@ impl Node {
209
209
T : rosidl_runtime_rs:: Service ,
210
210
{
211
211
let client = Arc :: new ( Client :: < T > :: new ( Arc :: clone ( & self . handle ) , topic) ?) ;
212
- self . clients_mtx . lock ( ) . unwrap ( ) . push ( Arc :: downgrade ( & client) as Weak < dyn ClientBase > ) ;
212
+ self . clients_mtx
213
+ . lock ( )
214
+ . unwrap ( )
215
+ . push ( Arc :: downgrade ( & client) as Weak < dyn ClientBase > ) ;
213
216
Ok ( client)
214
217
}
215
218
@@ -222,7 +225,9 @@ impl Node {
222
225
T : rosidl_runtime_rs:: Action ,
223
226
{
224
227
let action_client = Arc :: new ( ActionClient :: < T > :: new ( Arc :: clone ( & self . handle ) , topic) ?) ;
225
- self . action_clients_mtx . lock ( ) . unwrap ( )
228
+ self . action_clients_mtx
229
+ . lock ( )
230
+ . unwrap ( )
226
231
. push ( Arc :: downgrade ( & action_client) as Weak < dyn ActionClientBase > ) ;
227
232
Ok ( action_client)
228
233
}
@@ -252,7 +257,9 @@ impl Node {
252
257
handle_cancel,
253
258
handle_accepted,
254
259
) ?) ;
255
- self . action_servers_mtx . lock ( ) . unwrap ( )
260
+ self . action_servers_mtx
261
+ . lock ( )
262
+ . unwrap ( )
256
263
. push ( Arc :: downgrade ( & action_server) as Weak < dyn ActionServerBase > ) ;
257
264
Ok ( action_server)
258
265
}
@@ -271,7 +278,9 @@ impl Node {
271
278
Arc :: clone ( & self . handle . context_handle ) ,
272
279
None ,
273
280
) ) ;
274
- self . guard_conditions_mtx . lock ( ) . unwrap ( )
281
+ self . guard_conditions_mtx
282
+ . lock ( )
283
+ . unwrap ( )
275
284
. push ( Arc :: downgrade ( & guard_condition) as Weak < GuardCondition > ) ;
276
285
guard_condition
277
286
}
@@ -293,7 +302,9 @@ impl Node {
293
302
Arc :: clone ( & self . handle . context_handle ) ,
294
303
Some ( Box :: new ( callback) as Box < dyn Fn ( ) + Send + Sync > ) ,
295
304
) ) ;
296
- self . guard_conditions_mtx . lock ( ) . unwrap ( )
305
+ self . guard_conditions_mtx
306
+ . lock ( )
307
+ . unwrap ( )
297
308
. push ( Arc :: downgrade ( & guard_condition) as Weak < GuardCondition > ) ;
298
309
guard_condition
299
310
}
@@ -332,7 +343,9 @@ impl Node {
332
343
topic,
333
344
callback,
334
345
) ?) ;
335
- self . services_mtx . lock ( ) . unwrap ( )
346
+ self . services_mtx
347
+ . lock ( )
348
+ . unwrap ( )
336
349
. push ( Arc :: downgrade ( & service) as Weak < dyn ServiceBase > ) ;
337
350
Ok ( service)
338
351
}
@@ -356,36 +369,63 @@ impl Node {
356
369
qos,
357
370
callback,
358
371
) ?) ;
359
- self . subscriptions_mtx . lock ( )
372
+ self . subscriptions_mtx
373
+ . lock ( )
360
374
. unwrap ( )
361
375
. push ( Arc :: downgrade ( & subscription) as Weak < dyn SubscriptionBase > ) ;
362
376
Ok ( subscription)
363
377
}
364
378
365
379
/// Returns the subscriptions that have not been dropped yet.
366
380
pub ( crate ) fn live_subscriptions ( & self ) -> Vec < Arc < dyn SubscriptionBase > > {
367
- self . subscriptions_mtx . lock ( ) . unwrap ( )
381
+ self . subscriptions_mtx
382
+ . lock ( )
383
+ . unwrap ( )
368
384
. iter ( )
369
385
. filter_map ( Weak :: upgrade)
370
386
. collect ( )
371
387
}
372
388
373
389
pub ( crate ) fn live_clients ( & self ) -> Vec < Arc < dyn ClientBase > > {
374
- self . clients_mtx . lock ( ) . unwrap ( )
390
+ self . clients_mtx
391
+ . lock ( )
392
+ . unwrap ( )
375
393
. iter ( )
376
394
. filter_map ( Weak :: upgrade)
377
395
. collect ( )
378
396
}
379
397
380
398
pub ( crate ) fn live_guard_conditions ( & self ) -> Vec < Arc < GuardCondition > > {
381
- self . guard_conditions_mtx . lock ( ) . unwrap ( )
399
+ self . guard_conditions_mtx
400
+ . lock ( )
401
+ . unwrap ( )
382
402
. iter ( )
383
403
. filter_map ( Weak :: upgrade)
384
404
. collect ( )
385
405
}
386
406
387
407
pub ( crate ) fn live_services ( & self ) -> Vec < Arc < dyn ServiceBase > > {
388
- self . services_mtx . lock ( ) . unwrap ( )
408
+ self . services_mtx
409
+ . lock ( )
410
+ . unwrap ( )
411
+ . iter ( )
412
+ . filter_map ( Weak :: upgrade)
413
+ . collect ( )
414
+ }
415
+
416
+ pub ( crate ) fn live_action_clients ( & self ) -> Vec < Arc < dyn ActionClientBase > > {
417
+ self . action_clients_mtx
418
+ . lock ( )
419
+ . unwrap ( )
420
+ . iter ( )
421
+ . filter_map ( Weak :: upgrade)
422
+ . collect ( )
423
+ }
424
+
425
+ pub ( crate ) fn live_action_servers ( & self ) -> Vec < Arc < dyn ActionServerBase > > {
426
+ self . action_servers_mtx
427
+ . lock ( )
428
+ . unwrap ( )
389
429
. iter ( )
390
430
. filter_map ( Weak :: upgrade)
391
431
. collect ( )
0 commit comments