Skip to content

Commit 3916b54

Browse files
committed
Fix compilation errors
Signed-off-by: Michael X. Grey <[email protected]>
1 parent 1077813 commit 3916b54

File tree

6 files changed

+24
-29
lines changed

6 files changed

+24
-29
lines changed

rclrs/src/client.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ where
7878
futures: Arc<Mutex<HashMap<RequestId, oneshot::Sender<T::Response>>>>,
7979
/// Ensure the parent node remains alive as long as the subscription is held.
8080
/// This implementation will change in the future.
81+
#[allow(unused)]
8182
node: Arc<Node>,
8283
}
8384

@@ -129,7 +130,7 @@ where
129130

130131
let handle = Arc::new(ClientHandle {
131132
rcl_client: Mutex::new(rcl_client),
132-
node_handle,
133+
node_handle: Arc::clone(&node.handle),
133134
in_use_by_wait_set: Arc::new(AtomicBool::new(false)),
134135
});
135136

rclrs/src/node.rs

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -225,11 +225,11 @@ impl Node {
225225
///
226226
/// [1]: crate::Client
227227
// TODO: make client's lifetime depend on node's lifetime
228-
pub fn create_client<T>(&self, topic: &str) -> Result<Arc<Client<T>>, RclrsError>
228+
pub fn create_client<T>(self: &Arc<Self>, topic: &str) -> Result<Arc<Client<T>>, RclrsError>
229229
where
230230
T: rosidl_runtime_rs::Service,
231231
{
232-
let client = Arc::new(Client::<T>::new(Arc::clone(&self.handle), topic)?);
232+
let client = Arc::new(Client::<T>::new(self, topic)?);
233233
{ self.clients_mtx.lock().unwrap() }.push(Arc::downgrade(&client) as Weak<dyn ClientBase>);
234234
Ok(client)
235235
}
@@ -292,19 +292,15 @@ impl Node {
292292
///
293293
/// [1]: crate::Service
294294
pub fn create_service<T, F>(
295-
&self,
295+
self: &Arc<Self>,
296296
topic: &str,
297297
callback: F,
298298
) -> Result<Arc<Service<T>>, RclrsError>
299299
where
300300
T: rosidl_runtime_rs::Service,
301301
F: Fn(&rmw_request_id_t, T::Request) -> T::Response + 'static + Send,
302302
{
303-
let service = Arc::new(Service::<T>::new(
304-
Arc::clone(&self.handle),
305-
topic,
306-
callback,
307-
)?);
303+
let service = Arc::new(Service::<T>::new(self, topic, callback)?);
308304
{ self.services_mtx.lock().unwrap() }
309305
.push(Arc::downgrade(&service) as Weak<dyn ServiceBase>);
310306
Ok(service)
@@ -314,20 +310,15 @@ impl Node {
314310
///
315311
/// [1]: crate::Subscription
316312
pub fn create_subscription<T, Args>(
317-
&self,
313+
self: &Arc<Self>,
318314
topic: &str,
319315
qos: QoSProfile,
320316
callback: impl SubscriptionCallback<T, Args>,
321317
) -> Result<Arc<Subscription<T>>, RclrsError>
322318
where
323319
T: Message,
324320
{
325-
let subscription = Arc::new(Subscription::<T>::new(
326-
Arc::clone(&self.handle),
327-
topic,
328-
qos,
329-
callback,
330-
)?);
321+
let subscription = Arc::new(Subscription::<T>::new(self, topic, qos, callback)?);
331322
{ self.subscriptions_mtx.lock() }
332323
.unwrap()
333324
.push(Arc::downgrade(&subscription) as Weak<dyn SubscriptionBase>);

rclrs/src/parameter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -789,7 +789,7 @@ impl ParameterInterface {
789789
}
790790
}
791791

792-
pub(crate) fn create_services(&self, node: &Node) -> Result<(), RclrsError> {
792+
pub(crate) fn create_services(&self, node: &Arc<Node>) -> Result<(), RclrsError> {
793793
*self.services.lock().unwrap() =
794794
Some(ParameterService::new(node, self.parameter_map.clone())?);
795795
Ok(())

rclrs/src/parameter/service.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ fn set_parameters_atomically(
239239

240240
impl ParameterService {
241241
pub(crate) fn new(
242-
node: &Node,
242+
node: &Arc<Node>,
243243
parameter_map: Arc<Mutex<ParameterMap>>,
244244
) -> Result<Self, RclrsError> {
245245
let fqn = node.fully_qualified_name();

rclrs/src/service.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ where
7575
pub callback: Mutex<ServiceCallback<T::Request, T::Response>>,
7676
/// Ensure the parent node remains alive as long as the subscription is held.
7777
/// This implementation will change in the future.
78+
#[allow(unused)]
7879
node: Arc<Node>,
7980
}
8081

@@ -126,7 +127,7 @@ where
126127

127128
let handle = Arc::new(ServiceHandle {
128129
rcl_service: Mutex::new(rcl_service),
129-
node_handle,
130+
node_handle: Arc::clone(&node.handle),
130131
in_use_by_wait_set: Arc::new(AtomicBool::new(false)),
131132
});
132133

rclrs/src/subscription.rs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ unsafe impl Send for rcl_subscription_t {}
3131
/// [1]: <https://doc.rust-lang.org/reference/destructors.html>
3232
pub struct SubscriptionHandle {
3333
rcl_subscription: Mutex<rcl_subscription_t>,
34-
node_handle: Arc<Node>,
34+
node_handle: Arc<NodeHandle>,
3535
pub(crate) in_use_by_wait_set: Arc<AtomicBool>,
3636
}
3737

@@ -86,6 +86,7 @@ where
8686
pub callback: Mutex<AnySubscriptionCallback<T>>,
8787
/// Ensure the parent node remains alive as long as the subscription is held.
8888
/// This implementation will change in the future.
89+
#[allow(unused)]
8990
node: Arc<Node>,
9091
message: PhantomData<T>,
9192
}
@@ -142,7 +143,7 @@ where
142143

143144
let handle = Arc::new(SubscriptionHandle {
144145
rcl_subscription: Mutex::new(rcl_subscription),
145-
node_handle,
146+
node_handle: Arc::clone(&node.handle),
146147
in_use_by_wait_set: Arc::new(AtomicBool::new(false)),
147148
});
148149

@@ -403,24 +404,25 @@ mod tests {
403404

404405
#[test]
405406
fn test_node_subscription_raii() {
406-
use rclrs::*;
407+
use crate::*;
407408
use std::sync::atomic::Ordering;
408409

409-
let executor = Context::default().create_basic_executor();
410+
let mut executor = Context::default().create_basic_executor();
410411

411412
let triggered = Arc::new(AtomicBool::new(false));
412-
let callback = |_| {
413-
triggered.store(true, Ordering::AcqRel);
413+
let inner_triggered = Arc::clone(&triggered);
414+
let callback = move |_: msg::Empty| {
415+
inner_triggered.store(true, Ordering::Release);
414416
};
415417

416-
let (subscription, publisher) = {
418+
let (_subscription, publisher) = {
417419
let node = executor
418420
.create_node(&format!("test_node_subscription_raii_{}", line!()))
419421
.unwrap();
420422

421423
let qos = QoSProfile::default().keep_all().reliable();
422424
let subscription = node
423-
.create_subscription::<msg::Empty>("test_topic", qos, callback)
425+
.create_subscription::<msg::Empty, _>("test_topic", qos, callback)
424426
.unwrap();
425427
let publisher = node
426428
.create_publisher::<msg::Empty>("test_topic", qos)
@@ -429,9 +431,9 @@ mod tests {
429431
(subscription, publisher)
430432
};
431433

432-
publisher.publish(msg::Empty {});
434+
publisher.publish(msg::Empty::default()).unwrap();
433435
let start_time = std::time::Instant::now();
434-
while !triggered.load(Ordering::AcqRel) {
436+
while !triggered.load(Ordering::Acquire) {
435437
assert!(executor.spin(SpinOptions::spin_once()).is_empty());
436438
assert!(start_time.elapsed() < std::time::Duration::from_secs(10));
437439
}

0 commit comments

Comments
 (0)