Add missing descructors
This commit is contained in:
parent
f5ba556e2e
commit
eb1f461943
|
|
@ -73,26 +73,10 @@ pub trait WrappedTypesupport:
|
||||||
fn to_serialized_bytes(&self) -> Result<Vec<u8>> {
|
fn to_serialized_bytes(&self) -> Result<Vec<u8>> {
|
||||||
use r2r_rcl::*;
|
use r2r_rcl::*;
|
||||||
|
|
||||||
let msg = Self::create_msg();
|
|
||||||
|
|
||||||
self.copy_to_native(unsafe { msg.as_mut().expect("not null") });
|
|
||||||
|
|
||||||
// let mut msg_buf: rcl_serialized_message_t =
|
|
||||||
// unsafe { rcutils_get_zero_initialized_uint8_array() };
|
|
||||||
|
|
||||||
// let ret = unsafe {
|
|
||||||
// rcutils_uint8_array_init(
|
|
||||||
// &mut msg_buf as *mut rcl_serialized_message_t,
|
|
||||||
// 0,
|
|
||||||
// &rcutils_get_default_allocator(),
|
|
||||||
// )
|
|
||||||
// };
|
|
||||||
|
|
||||||
// if ret != RCL_RET_OK as i32 {
|
|
||||||
// return Err(Error::from_rcl_error(ret));
|
|
||||||
// }
|
|
||||||
|
|
||||||
SERIALIZED_MESSAGE_CACHE.with(|msg_buf| {
|
SERIALIZED_MESSAGE_CACHE.with(|msg_buf| {
|
||||||
|
let msg = Self::create_msg();
|
||||||
|
|
||||||
|
self.copy_to_native(unsafe { msg.as_mut().expect("not null") });
|
||||||
|
|
||||||
let msg_buf: &mut rcl_serialized_message_t = &mut *msg_buf.as_ref().map_err(|err| Error::from_rcl_error(*err))?.borrow_mut();
|
let msg_buf: &mut rcl_serialized_message_t = &mut *msg_buf.as_ref().map_err(|err| Error::from_rcl_error(*err))?.borrow_mut();
|
||||||
|
|
||||||
|
|
@ -108,6 +92,8 @@ pub trait WrappedTypesupport:
|
||||||
std::slice::from_raw_parts(msg_buf.buffer, msg_buf.buffer_length).to_vec()
|
std::slice::from_raw_parts(msg_buf.buffer, msg_buf.buffer_length).to_vec()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Self::destroy_msg(msg);
|
||||||
|
|
||||||
if result == RCL_RET_OK as i32 {
|
if result == RCL_RET_OK as i32 {
|
||||||
Ok(data_bytes)
|
Ok(data_bytes)
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -142,11 +128,16 @@ pub trait WrappedTypesupport:
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
if result == RCL_RET_OK as i32 {
|
let ret_val = if result == RCL_RET_OK as i32 {
|
||||||
Ok(Self::from_native(unsafe{ msg.as_ref().expect("not null") }))
|
Ok(Self::from_native(unsafe{ msg.as_ref().expect("not null") }))
|
||||||
} else {
|
} else {
|
||||||
Err(Error::from_rcl_error(result))
|
Err(Error::from_rcl_error(result))
|
||||||
}
|
};
|
||||||
|
|
||||||
|
Self::destroy_msg(msg);
|
||||||
|
|
||||||
|
ret_val
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue