Merge branch 'master' of github.com:sequenceplanner/r2r

This commit is contained in:
Martin Dahl 2020-09-13 14:31:57 +02:00
commit 11496de6fd
2 changed files with 17 additions and 1 deletions

View File

@ -10,6 +10,7 @@ fn main() -> Result<(), Error> {
println!("node name: {}", node.name()?);
println!("node fully qualified name: {}", node.fully_qualified_name()?);
println!("node namespace: {}", node.namespace()?);
println!("node parameters");
node.params.iter().for_each(|(k,v)| {

View File

@ -605,6 +605,15 @@ impl Node {
Ok(s.to_str().unwrap_or("").to_owned())
}
pub fn namespace(&self) -> Result<String> {
let cstr = unsafe { rcl_node_get_namespace(self.node_handle.as_ref()) };
if cstr == std::ptr::null() {
return Err(Error::RCL_RET_NODE_INVALID);
}
let s = unsafe { CStr::from_ptr(cstr as *const i8) };
Ok(s.to_str().unwrap_or("").to_owned())
}
fn load_params(&mut self) -> Result<()> {
let ctx = self.context.context_handle.lock().unwrap();
let mut params: Box<*mut rcl_params_t> = Box::new(std::ptr::null_mut());
@ -632,6 +641,7 @@ impl Node {
};
let qualified_name = self.fully_qualified_name()?;
let name = self.name()?;
for (nn, np) in node_names.iter().zip(node_params) {
let node_name_cstr = unsafe { CStr::from_ptr(*nn as *mut i8) };
@ -640,7 +650,12 @@ impl Node {
// This is copied from rclcpp, but there is a comment there suggesting
// that more wildcards will be added in the future. Take note and mimic
// their behavior.
if !(node_name == "/**" || qualified_name == node_name) {
if !(
node_name == "/**" ||
node_name == "**" ||
qualified_name == node_name ||
name == node_name
) {
continue;
}