Skip to content

Commit 16f96ec

Browse files
committed
fix(service): add serdes type param S to ZClient/ZServer for non-serde message types
1 parent e0bb963 commit 16f96ec

File tree

4 files changed

+86
-75
lines changed

4 files changed

+86
-75
lines changed

crates/rmw-zenoh-rs/src/rmw.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -890,7 +890,8 @@ pub extern "C" fn rmw_create_client(
890890
let mut zclient_builder = node_impl
891891
.inner
892892
.create_client::<crate::msg::RosService>(&qualified_service)
893-
.with_type_info(service_type_support.get_type_info());
893+
.with_type_info(service_type_support.get_type_info())
894+
.with_serdes::<crate::msg::RosSerdes>();
894895
zclient_builder.entity.qos = qos.to_protocol_qos();
895896
let entity = zclient_builder.entity.clone();
896897

@@ -1052,7 +1053,8 @@ pub extern "C" fn rmw_create_service(
10521053
let mut zserver_builder = node_impl
10531054
.inner
10541055
.create_service::<crate::msg::RosService>(&qualified_service)
1055-
.with_type_info(service_type_support.get_type_info());
1056+
.with_type_info(service_type_support.get_type_info())
1057+
.with_serdes::<crate::msg::RosSerdes>();
10561058
zserver_builder.entity.qos = qos.to_protocol_qos();
10571059
let entity = zserver_builder.entity.clone();
10581060

crates/rmw-zenoh-rs/src/service.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use zenoh::Result;
1010

1111
/// Client implementation for RMW
1212
pub struct ClientImpl {
13-
pub inner: ros_z::service::ZClient<crate::msg::RosService>,
13+
pub inner: ros_z::service::ZClient<crate::msg::RosService, crate::msg::RosSerdes>,
1414
pub service_name: CString,
1515
pub options: rmw_client_options_t,
1616
pub request_ts: crate::type_support::ServiceTypeSupport,
@@ -63,9 +63,7 @@ impl ClientImpl {
6363
};
6464

6565
// Send the request with notification callback
66-
let _ = self
67-
.inner
68-
.rmw_send_request::<crate::msg::RosSerdes, _>(&req, notify_callback)?;
66+
let _ = self.inner.rmw_send_request(&req, notify_callback)?;
6967

7068
// Return the sequence number we tracked
7169
unsafe {
@@ -173,7 +171,8 @@ impl ClientImpl {
173171

174172
/// Service implementation for RMW
175173
pub struct ServiceImpl {
176-
pub inner: ros_z::service::ZServer<crate::msg::RosService>,
174+
pub inner:
175+
ros_z::service::ZServer<crate::msg::RosService, zenoh::query::Query, crate::msg::RosSerdes>,
177176
pub service_name: CString,
178177
pub request_ts: crate::type_support::ServiceTypeSupport,
179178
pub response_ts: crate::type_support::ServiceTypeSupport,
@@ -319,10 +318,7 @@ impl ServiceImpl {
319318
let resp = crate::msg::RosMessage::new(response, self.response_ts.response);
320319

321320
// Send response
322-
match self
323-
.inner
324-
.rmw_send_response::<crate::msg::RosSerdes>(&resp, &key)
325-
{
321+
match self.inner.rmw_send_response(&resp, &key) {
326322
Ok(_) => {
327323
tracing::debug!("[ServiceImpl::send_response] Response sent successfully");
328324
Ok(())

crates/ros-z/examples/protobuf_demo/src/lib.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,10 @@ pub fn run_service_client(
101101
) -> Result<()> {
102102
let node = ctx.create_node("calculator_client").build()?;
103103

104-
let client = node.create_client::<Calculate>(service_name).build()?;
104+
let client = node
105+
.create_client::<Calculate>(service_name)
106+
.with_serdes::<ProtobufSerdes>()
107+
.build()?;
105108

106109
println!("Calculator service client started");
107110
println!("Calling service '{}'...\n", service_name);
@@ -163,7 +166,10 @@ pub fn run_service_server(
163166
) -> Result<()> {
164167
let node = ctx.create_node("calculator_server").build()?;
165168

166-
let mut server = node.create_service::<Calculate>(service_name).build()?;
169+
let mut server = node
170+
.create_service::<Calculate>(service_name)
171+
.with_serdes::<ProtobufSerdes>()
172+
.build()?;
167173

168174
println!("Calculator service server started on '{}'", service_name);
169175
println!("Waiting for requests...\n");

0 commit comments

Comments
 (0)