Skip to content

Commit 5b513ba

Browse files
Format
Signed-off-by: Luca Della Vedova <[email protected]>
1 parent 76e18d5 commit 5b513ba

File tree

5 files changed

+68
-41
lines changed

5 files changed

+68
-41
lines changed

rclrs/src/dynamic_message/dynamic_publisher.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,7 @@ impl Drop for DynamicPublisher {
3535
let mut rcl_node = self.node_handle.rcl_node.lock().unwrap();
3636
unsafe {
3737
// SAFETY: No preconditions for this function (besides the arguments being valid).
38-
rcl_publisher_fini(
39-
self.rcl_publisher_mtx.get_mut().unwrap(),
40-
&mut *rcl_node,
41-
);
38+
rcl_publisher_fini(self.rcl_publisher_mtx.get_mut().unwrap(), &mut *rcl_node);
4239
}
4340
}
4441
}

rclrs/src/dynamic_message/dynamic_subscription.rs

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ use super::{
1313
};
1414
use crate::rcl_bindings::*;
1515
use crate::{
16-
ENTITY_LIFECYCLE_MUTEX, Waitable, RclPrimitive, MessageInfo, RclPrimitiveKind, RclPrimitiveHandle, WorkScope,
17-
Node, QoSProfile, RclReturnCode, RclrsError, ToResult, NodeHandle, WorkerCommands, WaitableLifecycle, SubscriptionHandle,
16+
MessageInfo, Node, NodeHandle, QoSProfile, RclPrimitive, RclPrimitiveHandle, RclPrimitiveKind,
17+
RclReturnCode, RclrsError, SubscriptionHandle, ToResult, Waitable, WaitableLifecycle,
18+
WorkScope, WorkerCommands, ENTITY_LIFECYCLE_MUTEX,
1819
};
1920

2021
struct DynamicSubscriptionExecutable<Payload> {
@@ -26,11 +27,15 @@ struct DynamicSubscriptionExecutable<Payload> {
2627

2728
// TODO(luca) consider making these enums if we want different callback types
2829
// TODO(luca) make fields private
29-
pub struct NodeDynamicSubscriptionCallback(pub Box<dyn FnMut(DynamicMessage, MessageInfo) -> BoxFuture<'static, ()> + Send>);
30-
pub struct WorkerDynamicSubscriptionCallback<Payload>(pub Box<dyn FnMut(&mut Payload, DynamicMessage, MessageInfo) + Send>);
30+
pub struct NodeDynamicSubscriptionCallback(
31+
pub Box<dyn FnMut(DynamicMessage, MessageInfo) -> BoxFuture<'static, ()> + Send>,
32+
);
33+
pub struct WorkerDynamicSubscriptionCallback<Payload>(
34+
pub Box<dyn FnMut(&mut Payload, DynamicMessage, MessageInfo) + Send>,
35+
);
3136

3237
impl Deref for NodeDynamicSubscriptionCallback {
33-
type Target = Box<dyn FnMut(DynamicMessage, MessageInfo)-> BoxFuture<'static, ()> + Send>;
38+
type Target = Box<dyn FnMut(DynamicMessage, MessageInfo) -> BoxFuture<'static, ()> + Send>;
3439
fn deref(&self) -> &Self::Target {
3540
&self.0
3641
}
@@ -58,7 +63,7 @@ impl<Payload> DerefMut for WorkerDynamicSubscriptionCallback<Payload> {
5863
//pub trait NodeDynamicSubscriptionCallback = FnMut(DynamicMessage, MessageInfo) -> BoxFuture<'static, ()> + Send;
5964
//pub trait WorkerDynamicSubscriptionCallback<Payload> = FnMut(&mut Payload, DynamicMessage, MessageInfo) + Send;
6065

61-
pub enum DynamicSubscriptionCallback<Payload> {
66+
pub enum DynamicSubscriptionCallback<Payload> {
6267
/// A callback with the message and the message info as arguments.
6368
Node(NodeDynamicSubscriptionCallback),
6469
/// A callback with the payload, message, and the message info as arguments.
@@ -71,7 +76,9 @@ impl From<NodeDynamicSubscriptionCallback> for DynamicSubscriptionCallback<()> {
7176
}
7277
}
7378

74-
impl<Payload> From<WorkerDynamicSubscriptionCallback<Payload>> for DynamicSubscriptionCallback<Payload> {
79+
impl<Payload> From<WorkerDynamicSubscriptionCallback<Payload>>
80+
for DynamicSubscriptionCallback<Payload>
81+
{
7582
fn from(value: WorkerDynamicSubscriptionCallback<Payload>) -> Self {
7683
DynamicSubscriptionCallback::Worker(value)
7784
}
@@ -122,12 +129,14 @@ impl<Payload> DynamicSubscriptionExecutable<Payload> {
122129
)
123130
.ok()?
124131
};
125-
Ok((dynamic_message, MessageInfo::from_rmw_message_info(&message_info)))
132+
Ok((
133+
dynamic_message,
134+
MessageInfo::from_rmw_message_info(&message_info),
135+
))
126136
}
127137
}
128138

129-
impl<Payload: 'static> RclPrimitive for DynamicSubscriptionExecutable<Payload>
130-
{
139+
impl<Payload: 'static> RclPrimitive for DynamicSubscriptionExecutable<Payload> {
131140
unsafe fn execute(&mut self, payload: &mut dyn Any) -> Result<(), RclrsError> {
132141
self.callback
133142
.lock()
@@ -168,7 +177,7 @@ where
168177

169178
impl<Scope> DynamicSubscription<Scope>
170179
where
171-
Scope: WorkScope
180+
Scope: WorkScope,
172181
{
173182
/// Creates a new dynamic subscription.
174183
///
@@ -180,8 +189,7 @@ where
180189
callback: impl Into<DynamicSubscriptionCallback<Scope::Payload>>,
181190
node_handle: &Arc<NodeHandle>,
182191
commands: &Arc<WorkerCommands>,
183-
) -> Result<Arc<Self>, RclrsError>
184-
{
192+
) -> Result<Arc<Self>, RclrsError> {
185193
// TODO(luca) a lot of duplication with nomral, refactor
186194
// This loads the introspection type support library.
187195
let metadata = DynamicMessageMetadata::new(topic_type)?;

rclrs/src/dynamic_message/error.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,4 @@ impl PartialEq for DynamicMessageError {
6262
}
6363
}
6464

65-
impl Eq for DynamicMessageError { }
65+
impl Eq for DynamicMessageError {}

rclrs/src/dynamic_message/message_structure.rs

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -325,37 +325,50 @@ mod tests {
325325

326326
#[test]
327327
fn message_structure_is_accurate() {
328-
let arrays_metadata = DynamicMessageMetadata::new("test_msgs/msg/Arrays".try_into().unwrap()).unwrap();
328+
let arrays_metadata =
329+
DynamicMessageMetadata::new("test_msgs/msg/Arrays".try_into().unwrap()).unwrap();
329330
let arrays_structure = Box::new(arrays_metadata.structure().clone());
330-
let builtins_metadata = DynamicMessageMetadata::new("test_msgs/msg/Builtins".try_into().unwrap()).unwrap();
331+
let builtins_metadata =
332+
DynamicMessageMetadata::new("test_msgs/msg/Builtins".try_into().unwrap()).unwrap();
331333
let builtins_structure = Box::new(builtins_metadata.structure().clone());
332334
let duration_metadata =
333-
DynamicMessageMetadata::new("builtin_interfaces/msg/Duration".try_into().unwrap()).unwrap();
335+
DynamicMessageMetadata::new("builtin_interfaces/msg/Duration".try_into().unwrap())
336+
.unwrap();
334337
let duration_structure = Box::new(duration_metadata.structure().clone());
335-
let empty_metadata = DynamicMessageMetadata::new("test_msgs/msg/Empty".try_into().unwrap()).unwrap();
338+
let empty_metadata =
339+
DynamicMessageMetadata::new("test_msgs/msg/Empty".try_into().unwrap()).unwrap();
336340
let empty_structure = Box::new(empty_metadata.structure().clone());
337-
let time_metadata = DynamicMessageMetadata::new("builtin_interfaces/msg/Time".try_into().unwrap()).unwrap();
341+
let time_metadata =
342+
DynamicMessageMetadata::new("builtin_interfaces/msg/Time".try_into().unwrap()).unwrap();
338343
let time_structure = Box::new(time_metadata.structure().clone());
339-
let basic_types_metadata = DynamicMessageMetadata::new("test_msgs/msg/BasicTypes".try_into().unwrap()).unwrap();
344+
let basic_types_metadata =
345+
DynamicMessageMetadata::new("test_msgs/msg/BasicTypes".try_into().unwrap()).unwrap();
340346
let basic_types_structure = Box::new(basic_types_metadata.structure().clone());
341347
let bounded_sequences_metadata =
342-
DynamicMessageMetadata::new("test_msgs/msg/BoundedSequences".try_into().unwrap()).unwrap();
348+
DynamicMessageMetadata::new("test_msgs/msg/BoundedSequences".try_into().unwrap())
349+
.unwrap();
343350
let bounded_sequences_structure = Box::new(bounded_sequences_metadata.structure().clone());
344-
let constants_metadata = DynamicMessageMetadata::new("test_msgs/msg/Constants".try_into().unwrap()).unwrap();
351+
let constants_metadata =
352+
DynamicMessageMetadata::new("test_msgs/msg/Constants".try_into().unwrap()).unwrap();
345353
let constants_structure = Box::new(constants_metadata.structure().clone());
346354
let multi_nested_metadata =
347355
DynamicMessageMetadata::new("test_msgs/msg/MultiNested".try_into().unwrap()).unwrap();
348356
let multi_nested_structure = Box::new(multi_nested_metadata.structure().clone());
349-
let nested_metadata = DynamicMessageMetadata::new("test_msgs/msg/Nested".try_into().unwrap()).unwrap();
357+
let nested_metadata =
358+
DynamicMessageMetadata::new("test_msgs/msg/Nested".try_into().unwrap()).unwrap();
350359
let nested_structure = Box::new(nested_metadata.structure().clone());
351-
let defaults_metadata = DynamicMessageMetadata::new("test_msgs/msg/Defaults".try_into().unwrap()).unwrap();
360+
let defaults_metadata =
361+
DynamicMessageMetadata::new("test_msgs/msg/Defaults".try_into().unwrap()).unwrap();
352362
let defaults_structure = Box::new(defaults_metadata.structure().clone());
353-
let strings_metadata = DynamicMessageMetadata::new("test_msgs/msg/Strings".try_into().unwrap()).unwrap();
363+
let strings_metadata =
364+
DynamicMessageMetadata::new("test_msgs/msg/Strings".try_into().unwrap()).unwrap();
354365
let strings_structure = Box::new(strings_metadata.structure().clone());
355-
let wstrings_metadata = DynamicMessageMetadata::new("test_msgs/msg/WStrings".try_into().unwrap()).unwrap();
366+
let wstrings_metadata =
367+
DynamicMessageMetadata::new("test_msgs/msg/WStrings".try_into().unwrap()).unwrap();
356368
let wstrings_structure = Box::new(wstrings_metadata.structure().clone());
357369
let unbounded_sequences_metadata =
358-
DynamicMessageMetadata::new("test_msgs/msg/UnboundedSequences".try_into().unwrap()).unwrap();
370+
DynamicMessageMetadata::new("test_msgs/msg/UnboundedSequences".try_into().unwrap())
371+
.unwrap();
359372
let unbounded_sequences_structure =
360373
Box::new(unbounded_sequences_metadata.structure().clone());
361374

@@ -1123,12 +1136,13 @@ mod tests {
11231136
);
11241137

11251138
let _dyn_msg = DynamicMessage::new("test_msgs/msg/Arrays".try_into().unwrap()).unwrap();
1126-
let _dyn_msg = DynamicMessage::new("test_msgs/msg/UnboundedSequences".try_into().unwrap()).unwrap();
1127-
let _dyn_msg = DynamicMessage::new("test_msgs/msg/BoundedSequences".try_into().unwrap()).unwrap();
1139+
let _dyn_msg =
1140+
DynamicMessage::new("test_msgs/msg/UnboundedSequences".try_into().unwrap()).unwrap();
1141+
let _dyn_msg =
1142+
DynamicMessage::new("test_msgs/msg/BoundedSequences".try_into().unwrap()).unwrap();
11281143
}
11291144
}
11301145

1131-
11321146
// #[test]
11331147
// fn test_mut_value_same_as_value() {
11341148

rclrs/src/node.rs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ pub use self::builder::*;
1212
pub use self::graph::*;
1313
=======
1414
*/
15-
use crate::QoSProfile;
1615
#[cfg(feature = "dyn_msg")]
1716
use crate::dynamic_message::{DynamicMessage, DynamicSubscription};
17+
use crate::QoSProfile;
1818

1919
pub use graph::*;
2020

@@ -42,12 +42,15 @@ use async_std::future::timeout;
4242
use rosidl_runtime_rs::Message;
4343

4444
use crate::{
45-
rcl_bindings::*, Client, ClientOptions, ClientState, Clock, ContextHandle, ExecutorCommands,
45+
dynamic_message::{MessageTypeName, NodeDynamicSubscriptionCallback},
46+
rcl_bindings::*,
47+
Client, ClientOptions, ClientState, Clock, ContextHandle, ExecutorCommands,
4648
IntoAsyncServiceCallback, IntoAsyncSubscriptionCallback, IntoNodeServiceCallback,
47-
IntoNodeSubscriptionCallback, LogParams, Logger, ParameterBuilder, ParameterInterface, dynamic_message::{NodeDynamicSubscriptionCallback, MessageTypeName},
48-
ParameterVariant, Parameters, Promise, Publisher, PublisherOptions, PublisherState, RclrsError, MessageInfo,
49-
Service, ServiceOptions, ServiceState, Subscription, SubscriptionOptions, SubscriptionState,
50-
TimeSource, ToLogParams, Worker, WorkerOptions, WorkerState, ENTITY_LIFECYCLE_MUTEX,
49+
IntoNodeSubscriptionCallback, LogParams, Logger, MessageInfo, ParameterBuilder,
50+
ParameterInterface, ParameterVariant, Parameters, Promise, Publisher, PublisherOptions,
51+
PublisherState, RclrsError, Service, ServiceOptions, ServiceState, Subscription,
52+
SubscriptionOptions, SubscriptionState, TimeSource, ToLogParams, Worker, WorkerOptions,
53+
WorkerState, ENTITY_LIFECYCLE_MUTEX,
5154
};
5255

5356
/// A processing unit that can communicate with other nodes. See the API of
@@ -812,7 +815,12 @@ impl NodeState {
812815
F: FnMut(DynamicMessage, MessageInfo) -> BoxFuture<'static, ()> + Send + 'static,
813816
{
814817
let subscription = DynamicSubscription::new(
815-
topic, topic_type, qos, NodeDynamicSubscriptionCallback(Box::new(callback)), &self.handle, self.commands.async_worker_commands(),
818+
topic,
819+
topic_type,
820+
qos,
821+
NodeDynamicSubscriptionCallback(Box::new(callback)),
822+
&self.handle,
823+
self.commands.async_worker_commands(),
816824
)?;
817825
// TODO(luca) similar API to above?
818826
Ok(subscription)

0 commit comments

Comments
 (0)