Skip to content

Commit ccd3852

Browse files
Fix take logic, cleanup
Signed-off-by: Luca Della Vedova <[email protected]>
1 parent c4e0bed commit ccd3852

File tree

2 files changed

+14
-29
lines changed

2 files changed

+14
-29
lines changed

rclrs/src/dynamic_message/dynamic_subscription.rs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use crate::rcl_bindings::*;
1414
use crate::{
1515
MessageInfo, Node, NodeHandle, RclPrimitive, RclPrimitiveHandle, RclPrimitiveKind, RclrsError,
1616
SubscriptionHandle, SubscriptionOptions, ToResult, Waitable, WaitableLifecycle, WorkScope,
17-
Worker, WorkerCommands, ENTITY_LIFECYCLE_MUTEX,
17+
Worker, WorkerCommands, ENTITY_LIFECYCLE_MUTEX, RclrsErrorFilter,
1818
};
1919

2020
/// Struct for receiving messages whose type is not know at compile time.
@@ -172,17 +172,20 @@ impl<Payload: 'static> DynamicSubscriptionCallback<Payload> {
172172
received: (*any_payload).type_id(),
173173
});
174174
};
175-
match self {
176-
Self::Node(cb) => {
177-
let (msg, msg_info) = executable.take()?;
178-
commands.run_async(cb(msg, msg_info));
175+
let mut evaluate = || {
176+
match self {
177+
Self::Node(cb) => {
178+
let (msg, msg_info) = executable.take()?;
179+
commands.run_async(cb(msg, msg_info));
180+
}
181+
Self::Worker(cb) => {
182+
let (msg, msg_info) = executable.take()?;
183+
cb(payload, msg, msg_info);
184+
}
179185
}
180-
Self::Worker(cb) => {
181-
let (msg, msg_info) = executable.take()?;
182-
cb(payload, msg, msg_info);
183-
}
184-
}
185-
Ok(())
186+
Ok(())
187+
};
188+
evaluate().take_failed_ok()
186189
}
187190
}
188191

rclrs/src/subscription.rs

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -270,17 +270,6 @@ impl<'a> DynamicSubscriptionOptions<'a> {
270270
}
271271
}
272272

273-
/*
274-
impl<'a, T: IntoPrimitiveOptions<'a>> From<T> for DynamicSubscriptionOptions<'a> {
275-
fn from(value: T) -> Self {
276-
let primitive = value.into_primitive_options();
277-
let mut options = Self::new(primitive.name);
278-
primitive.apply_to(&mut options.qos);
279-
options
280-
}
281-
}
282-
*/
283-
284273
struct SubscriptionExecutable<T: Message, Payload> {
285274
handle: Arc<SubscriptionHandle>,
286275
callback: Arc<Mutex<AnySubscriptionCallback<T, Payload>>>,
@@ -365,13 +354,6 @@ impl SubscriptionHandle {
365354
Ok((T::from_rmw_message(rmw_message), message_info))
366355
}
367356

368-
/*
369-
#[cfg(feature = "dyn_msg")]
370-
fn take_dynamic(&self) -> Result<(DynamicMessage, MessageInfo), RclrsError> {
371-
372-
}
373-
*/
374-
375357
/// This is a version of take() that returns a boxed message.
376358
///
377359
/// This can be more efficient for messages containing large arrays.

0 commit comments

Comments
 (0)