@@ -256,12 +256,8 @@ impl Handler for RegisterSubscriberHandler {
256
256
let topic = resolve ( & caller_id, & topic) ;
257
257
258
258
if let Some ( known_topic_type) = self . data . topics . read ( ) . unwrap ( ) . get ( & topic. clone ( ) ) {
259
- if known_topic_type != & topic_type {
260
- let err_msg = format ! (
261
- "{} for topic {} does not match {}" ,
262
- topic_type, topic, known_topic_type
263
- ) ;
264
- return Ok ( ( 0 , err_msg, "" ) . try_to_value ( ) ?) ;
259
+ if known_topic_type != & topic_type && topic_type != "*" {
260
+ log:: warn!( "Topic '{topic}' was initially published as '{known_topic_type}', but subscriber '{caller_id}' wants it as '{topic_type}'." ) ;
265
261
}
266
262
}
267
263
@@ -376,8 +372,7 @@ impl Handler for RegisterPublisherHandler {
376
372
377
373
if let Some ( v) = self . data . topics . read ( ) . unwrap ( ) . get ( & topic. clone ( ) ) {
378
374
if v != & topic_type {
379
- let err_msg = format ! ( "{} for topic {} does not match {}" , topic_type, topic, v) ;
380
- return Ok ( ( 0 , err_msg, Vec :: < String > :: default ( ) ) . try_to_value ( ) ?) ;
375
+ log:: warn!( "New publisher for topic '{topic}' has type '{topic_type}', but it is already published as '{v}'." ) ;
381
376
}
382
377
}
383
378
@@ -846,15 +841,16 @@ async fn update_client_with_new_param_value(
846
841
subscribing_node_id : String ,
847
842
param_name : String ,
848
843
new_value : Value ,
849
- ) -> Result < ( ) , anyhow:: Error > {
844
+ ) -> Result < Value , anyhow:: Error > {
850
845
let client_api = ClientApi :: new ( & client_api_url) ;
851
846
let request = client_api. param_update ( & updating_node_id, & param_name, & new_value) ;
852
847
let res = request. await ;
853
848
match res {
854
- Ok ( ( ) ) => log:: debug!(
855
- "Sent new value for param '{}' to node '{}'." ,
849
+ Ok ( ref v ) => log:: debug!(
850
+ "Sent new value for param '{}' to node '{}'. response: {:?} " ,
856
851
param_name,
857
- subscribing_node_id
852
+ subscribing_node_id,
853
+ & v
858
854
) ,
859
855
Err ( ref e) => log:: debug!(
860
856
"Error sending new value for param '{}' to node '{}': {:?}" ,
@@ -864,7 +860,7 @@ async fn update_client_with_new_param_value(
864
860
) ,
865
861
}
866
862
867
- res
863
+ Ok ( res? )
868
864
}
869
865
870
866
/// Handler for setting a ROS parameter.
@@ -934,8 +930,8 @@ impl Handler for SetParamHandler {
934
930
935
931
while let Some ( res) = update_futures. join_next ( ) . await {
936
932
match res {
937
- Ok ( Ok ( ( ) ) ) => {
938
- log:: debug!( "a subscriber has been updated" ) ;
933
+ Ok ( Ok ( v ) ) => {
934
+ log:: debug!( "a subscriber has been updated (res: {:#?})" , & v ) ;
939
935
}
940
936
Ok ( Err ( err) ) => {
941
937
log:: warn!(
@@ -986,13 +982,13 @@ impl Handler for GetParamHandler {
986
982
log:: debug!( "GetParamHandler {:?} " , params) ;
987
983
type Request = ( String , String ) ;
988
984
let ( caller_id, key) = Request :: try_from_params ( params) ?;
989
- let key = resolve ( & caller_id, & key) ;
985
+ let key_full = resolve ( & caller_id, & key) ;
990
986
let params = self . data . parameters . read ( ) . unwrap ( ) ;
991
- let key = key . strip_prefix ( '/' ) . unwrap_or ( & key ) . split ( '/' ) ;
987
+ let key_path = key_full . strip_prefix ( '/' ) . unwrap_or ( & key_full ) . split ( '/' ) ;
992
988
993
- Ok ( match params. get ( key ) {
994
- Some ( value) => ( 1 , "" , value. to_owned ( ) ) ,
995
- None => ( 0 , "" , Value :: string ( "" . to_owned ( ) ) ) ,
989
+ Ok ( match params. get ( key_path ) {
990
+ Some ( value) => ( 1 , "" . to_owned ( ) , value. to_owned ( ) ) ,
991
+ None => ( - 1 , format ! ( "Parameter [{key_full}] is not set" ) , Value :: i4 ( 0 ) ) ,
996
992
}
997
993
. try_to_value ( ) ?)
998
994
}
0 commit comments