@@ -43,14 +43,14 @@ impl ParameterService {
43
43
. names
44
44
. into_iter ( )
45
45
. map ( |name| {
46
- // TODO(luca) Remove conversion to string and implement Borrow
47
- let storage = map. storage . get ( name. to_cstr ( ) . to_str ( ) . unwrap ( ) ) ?;
46
+ let name = name . to_cstr ( ) . to_str ( ) . ok ( ) ? ;
47
+ let storage = map. storage . get ( name) ?;
48
48
let mut descriptor = match storage {
49
49
ParameterStorage :: Declared ( storage) => {
50
50
let ( integer_range, floating_point_range) =
51
51
storage. options . ranges . to_descriptor_ranges ( ) ;
52
52
ParameterDescriptor {
53
- name,
53
+ name : name . into ( ) ,
54
54
type_ : Default :: default ( ) ,
55
55
description : storage. options . description . clone ( ) . into ( ) ,
56
56
additional_constraints : storage
@@ -65,7 +65,7 @@ impl ParameterService {
65
65
}
66
66
}
67
67
ParameterStorage :: Undeclared ( _) => ParameterDescriptor {
68
- name,
68
+ name : name . into ( ) ,
69
69
dynamic_typing : true ,
70
70
..Default :: default ( )
71
71
} ,
@@ -88,10 +88,8 @@ impl ParameterService {
88
88
. names
89
89
. into_iter ( )
90
90
. map ( |name| {
91
- // TODO(luca) Remove conversion to string and implement Borrow
92
- map. storage
93
- . get ( name. to_cstr ( ) . to_str ( ) . unwrap ( ) )
94
- . map ( |s| s. to_parameter_type ( ) )
91
+ let name = name. to_cstr ( ) . to_str ( ) . ok ( ) ?;
92
+ map. storage . get ( name) . map ( |s| s. to_parameter_type ( ) )
95
93
} )
96
94
. collect :: < Option < _ > > ( )
97
95
. unwrap_or_default ( ) ;
@@ -107,9 +105,8 @@ impl ParameterService {
107
105
. names
108
106
. into_iter ( )
109
107
. map ( |name| {
110
- // TODO(luca) Remove conversion to string and implement Borrow
111
- let storage = map. storage . get ( name. to_cstr ( ) . to_str ( ) . unwrap ( ) ) ?;
112
- match storage {
108
+ let name = name. to_cstr ( ) . to_str ( ) . ok ( ) ?;
109
+ match map. storage . get ( name) ? {
113
110
ParameterStorage :: Declared ( storage) => match & storage. value {
114
111
DeclaredValue :: Mandatory ( v) => {
115
112
Some ( v. read ( ) . unwrap ( ) . clone ( ) . into ( ) )
@@ -160,7 +157,7 @@ impl ParameterService {
160
157
let mut prefix = prefix. clone ( ) ;
161
158
prefix. extend ( "." . chars ( ) ) ;
162
159
if name. len ( ) > prefix. len ( )
163
- && name[ 0 ..prefix . len ( ) ] == prefix[ 0 .. ]
160
+ && name. starts_with ( & prefix)
164
161
&& check_parameter_name_depth ( & name[ prefix. len ( ) ..] )
165
162
{
166
163
return true ;
@@ -176,12 +173,10 @@ impl ParameterService {
176
173
let name = name. to_string ( ) ;
177
174
if let Some ( pos) = name. rfind ( '.' ) {
178
175
return Some ( name[ 0 ..pos] . into ( ) ) ;
179
- //return Some(name[0..pos].iter().map(|c| *c as char).collect());
180
176
}
181
177
None
182
178
} )
183
179
. collect ( ) ;
184
- // TODO(luca) populate prefixes in result
185
180
ListParameters_Response {
186
181
result : ListParametersResult {
187
182
names,
@@ -199,20 +194,25 @@ impl ParameterService {
199
194
. parameters
200
195
. into_iter ( )
201
196
. map ( |param| {
202
- let name = param. name . to_cstr ( ) . to_str ( ) . unwrap ( ) ;
203
- let value = map. validate_parameter_setting ( name, param. value ) ?;
204
- map. store_parameter ( name. into ( ) , value) ;
205
- Ok ( ( ) )
206
- } )
207
- . map ( |res| match res {
208
- Ok ( ( ) ) => SetParametersResult {
209
- successful : true ,
210
- reason : Default :: default ( ) ,
211
- } ,
212
- Err ( e) => SetParametersResult {
213
- successful : false ,
214
- reason : e,
215
- } ,
197
+ let Ok ( name) = param. name . to_cstr ( ) . to_str ( ) else {
198
+ return SetParametersResult {
199
+ successful : false ,
200
+ reason : "Failed parsing into UTF-8" . into ( ) ,
201
+ } ;
202
+ } ;
203
+ match map. validate_parameter_setting ( name, param. value ) {
204
+ Ok ( value) => {
205
+ map. store_parameter ( name. into ( ) , value) ;
206
+ SetParametersResult {
207
+ successful : true ,
208
+ reason : Default :: default ( ) ,
209
+ }
210
+ }
211
+ Err ( e) => SetParametersResult {
212
+ successful : false ,
213
+ reason : e. into ( ) ,
214
+ } ,
215
+ }
216
216
} )
217
217
. collect ( ) ;
218
218
SetParameters_Response { results }
@@ -226,7 +226,9 @@ impl ParameterService {
226
226
. parameters
227
227
. into_iter ( )
228
228
. map ( |param| {
229
- let name = param. name . to_cstr ( ) . to_str ( ) . unwrap ( ) ;
229
+ let Ok ( name) = param. name . to_cstr ( ) . to_str ( ) else {
230
+ return Err ( "Failed parsing into UTF-8" . into ( ) ) ;
231
+ } ;
230
232
let value = map. validate_parameter_setting ( name, param. value ) ?;
231
233
Ok ( ( name. into ( ) , value) )
232
234
} )
0 commit comments