Skip to content

Commit

Permalink
Add Publisher::get_subscription_count
Browse files Browse the repository at this point in the history
  • Loading branch information
romainreignier committed Feb 4, 2025
1 parent 83ab23a commit 3e04892
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions rclrs/src/publisher.rs
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,20 @@ where
}
}

/// Returns the number of subscriptions of the publisher.
pub fn get_subscription_count(&self) -> Result<usize, RclrsError> {
let mut subscription_count = 0;
// SAFETY: No preconditions for the function called.
unsafe {
rcl_publisher_get_subscription_count(
&*self.handle.rcl_publisher.lock().unwrap(),
&mut subscription_count,
)
.ok()?
};
Ok(subscription_count)
}

/// Publishes a message.
///
/// The [`MessageCow`] trait is implemented by any
Expand Down Expand Up @@ -327,6 +341,29 @@ mod tests {
expected_publishers_info
);

// Test get_subscription_count()
assert_eq!(node_1_empty_publisher.get_subscription_count(), Ok(0));
assert_eq!(node_1_basic_types_publisher.get_subscription_count(), Ok(0));
assert_eq!(node_2_default_publisher.get_subscription_count(), Ok(0));
let _node_1_empty_subscriber = graph.node1.create_subscription(
"graph_test_topic_1",
QOS_PROFILE_SYSTEM_DEFAULT,
|_msg: msg::Empty| {},
);
let _node_1_basic_types_subscriber = graph.node1.create_subscription(
"graph_test_topic_2",
QOS_PROFILE_SYSTEM_DEFAULT,
|_msg: msg::BasicTypes| {},
);
let _node_2_default_subscriber = graph.node1.create_subscription(
"graph_test_topic_3",
QOS_PROFILE_SYSTEM_DEFAULT,
|_msg: msg::Defaults| {},
);
assert_eq!(node_1_empty_publisher.get_subscription_count(), Ok(1));
assert_eq!(node_1_basic_types_publisher.get_subscription_count(), Ok(1));
assert_eq!(node_2_default_publisher.get_subscription_count(), Ok(1));

Ok(())
}
}

0 comments on commit 3e04892

Please sign in to comment.