@@ -190,7 +190,7 @@ extern "C" {
190190}
191191
192192pub fn set_map ( map_type : MapType , map : Vec < ( & str , & str ) > ) -> Result < ( ) , Status > {
193- let serialized_map = utils:: serialize_map ( map) ;
193+ let serialized_map = utils:: serialize_map ( & map) ;
194194 unsafe {
195195 match proxy_set_header_map_pairs ( map_type, serialized_map. as_ptr ( ) , serialized_map. len ( ) ) {
196196 Status :: Ok => Ok ( ( ) ) ,
@@ -200,7 +200,7 @@ pub fn set_map(map_type: MapType, map: Vec<(&str, &str)>) -> Result<(), Status>
200200}
201201
202202pub fn set_map_bytes ( map_type : MapType , map : Vec < ( & str , & [ u8 ] ) > ) -> Result < ( ) , Status > {
203- let serialized_map = utils:: serialize_map_bytes ( map) ;
203+ let serialized_map = utils:: serialize_map_bytes ( & map) ;
204204 unsafe {
205205 match proxy_set_header_map_pairs ( map_type, serialized_map. as_ptr ( ) , serialized_map. len ( ) ) {
206206 Status :: Ok => Ok ( ( ) ) ,
@@ -719,7 +719,7 @@ pub fn send_http_response(
719719 headers : Vec < ( & str , & str ) > ,
720720 body : Option < & [ u8 ] > ,
721721) -> Result < ( ) , Status > {
722- let serialized_headers = utils:: serialize_map ( headers) ;
722+ let serialized_headers = utils:: serialize_map ( & headers) ;
723723 unsafe {
724724 match proxy_send_local_response (
725725 status_code,
@@ -742,7 +742,7 @@ pub fn send_grpc_response(
742742 grpc_status_message : Option < & str > ,
743743 custom_metadata : Vec < ( & str , & [ u8 ] ) > ,
744744) -> Result < ( ) , Status > {
745- let serialized_custom_metadata = utils:: serialize_map_bytes ( custom_metadata) ;
745+ let serialized_custom_metadata = utils:: serialize_map_bytes ( & custom_metadata) ;
746746 unsafe {
747747 match proxy_send_local_response (
748748 200 ,
@@ -782,8 +782,8 @@ pub fn dispatch_http_call(
782782 trailers : Vec < ( & str , & str ) > ,
783783 timeout : Duration ,
784784) -> Result < u32 , Status > {
785- let serialized_headers = utils:: serialize_map ( headers) ;
786- let serialized_trailers = utils:: serialize_map ( trailers) ;
785+ let serialized_headers = utils:: serialize_map ( & headers) ;
786+ let serialized_trailers = utils:: serialize_map ( & trailers) ;
787787 let mut return_token: u32 = 0 ;
788788 unsafe {
789789 match proxy_http_call (
@@ -835,7 +835,7 @@ pub fn dispatch_grpc_call(
835835 timeout : Duration ,
836836) -> Result < u32 , Status > {
837837 let mut return_callout_id = 0 ;
838- let serialized_initial_metadata = utils:: serialize_map_bytes ( initial_metadata) ;
838+ let serialized_initial_metadata = utils:: serialize_map_bytes ( & initial_metadata) ;
839839 unsafe {
840840 match proxy_grpc_call (
841841 upstream_name. as_ptr ( ) ,
@@ -883,7 +883,7 @@ pub fn open_grpc_stream(
883883 initial_metadata : Vec < ( & str , & [ u8 ] ) > ,
884884) -> Result < u32 , Status > {
885885 let mut return_stream_id = 0 ;
886- let serialized_initial_metadata = utils:: serialize_map_bytes ( initial_metadata) ;
886+ let serialized_initial_metadata = utils:: serialize_map_bytes ( & initial_metadata) ;
887887 unsafe {
888888 match proxy_grpc_stream (
889889 upstream_name. as_ptr ( ) ,
@@ -1168,18 +1168,18 @@ mod utils {
11681168 bytes
11691169 }
11701170
1171- pub ( super ) fn serialize_map ( map : Vec < ( & str , & str ) > ) -> Bytes {
1171+ pub ( super ) fn serialize_map ( map : & [ ( & str , & str ) ] ) -> Bytes {
11721172 let mut size: usize = 4 ;
1173- for ( name, value) in & map {
1173+ for ( name, value) in map {
11741174 size += name. len ( ) + value. len ( ) + 10 ;
11751175 }
11761176 let mut bytes: Bytes = Vec :: with_capacity ( size) ;
11771177 bytes. extend_from_slice ( & ( map. len ( ) as u32 ) . to_le_bytes ( ) ) ;
1178- for ( name, value) in & map {
1178+ for ( name, value) in map {
11791179 bytes. extend_from_slice ( & ( name. len ( ) as u32 ) . to_le_bytes ( ) ) ;
11801180 bytes. extend_from_slice ( & ( value. len ( ) as u32 ) . to_le_bytes ( ) ) ;
11811181 }
1182- for ( name, value) in & map {
1182+ for ( name, value) in map {
11831183 bytes. extend_from_slice ( name. as_bytes ( ) ) ;
11841184 bytes. push ( 0 ) ;
11851185 bytes. extend_from_slice ( value. as_bytes ( ) ) ;
@@ -1188,18 +1188,18 @@ mod utils {
11881188 bytes
11891189 }
11901190
1191- pub ( super ) fn serialize_map_bytes ( map : Vec < ( & str , & [ u8 ] ) > ) -> Bytes {
1191+ pub ( super ) fn serialize_map_bytes ( map : & [ ( & str , & [ u8 ] ) ] ) -> Bytes {
11921192 let mut size: usize = 4 ;
1193- for ( name, value) in & map {
1193+ for ( name, value) in map {
11941194 size += name. len ( ) + value. len ( ) + 10 ;
11951195 }
11961196 let mut bytes: Bytes = Vec :: with_capacity ( size) ;
11971197 bytes. extend_from_slice ( & ( map. len ( ) as u32 ) . to_le_bytes ( ) ) ;
1198- for ( name, value) in & map {
1198+ for ( name, value) in map {
11991199 bytes. extend_from_slice ( & ( name. len ( ) as u32 ) . to_le_bytes ( ) ) ;
12001200 bytes. extend_from_slice ( & ( value. len ( ) as u32 ) . to_le_bytes ( ) ) ;
12011201 }
1202- for ( name, value) in & map {
1202+ for ( name, value) in map {
12031203 bytes. extend_from_slice ( name. as_bytes ( ) ) ;
12041204 bytes. push ( 0 ) ;
12051205 bytes. extend_from_slice ( value) ;
@@ -1299,13 +1299,13 @@ mod utils {
12991299
13001300 #[ test]
13011301 fn test_serialize_map_empty ( ) {
1302- let serialized_map = serialize_map ( vec ! [ ] ) ;
1302+ let serialized_map = serialize_map ( & [ ] ) ;
13031303 assert_eq ! ( serialized_map, [ 0 , 0 , 0 , 0 ] ) ;
13041304 }
13051305
13061306 #[ test]
13071307 fn test_serialize_map_empty_bytes ( ) {
1308- let serialized_map = serialize_map_bytes ( vec ! [ ] ) ;
1308+ let serialized_map = serialize_map_bytes ( & [ ] ) ;
13091309 assert_eq ! ( serialized_map, [ 0 , 0 , 0 , 0 ] ) ;
13101310 }
13111311
@@ -1327,14 +1327,14 @@ mod utils {
13271327
13281328 #[ test]
13291329 fn test_serialize_map ( ) {
1330- let serialized_map = serialize_map ( MAP . to_vec ( ) ) ;
1330+ let serialized_map = serialize_map ( MAP ) ;
13311331 assert_eq ! ( serialized_map, SERIALIZED_MAP ) ;
13321332 }
13331333
13341334 #[ test]
13351335 fn test_serialize_map_bytes ( ) {
13361336 let map: Vec < ( & str , & [ u8 ] ) > = MAP . iter ( ) . map ( |x| ( x. 0 , x. 1 . as_bytes ( ) ) ) . collect ( ) ;
1337- let serialized_map = serialize_map_bytes ( map) ;
1337+ let serialized_map = serialize_map_bytes ( & map) ;
13381338 assert_eq ! ( serialized_map, SERIALIZED_MAP ) ;
13391339 }
13401340
@@ -1364,7 +1364,7 @@ mod utils {
13641364 // TODO(v0.3): fix arguments, so that maps can be reused without conversion.
13651365 let map_refs: Vec < ( & str , & str ) > =
13661366 map. iter ( ) . map ( |x| ( x. 0 . as_ref ( ) , x. 1 . as_ref ( ) ) ) . collect ( ) ;
1367- let serialized_map = serialize_map ( map_refs) ;
1367+ let serialized_map = serialize_map ( & map_refs) ;
13681368 assert_eq ! ( serialized_map, SERIALIZED_MAP ) ;
13691369 }
13701370
@@ -1374,7 +1374,7 @@ mod utils {
13741374 // TODO(v0.3): fix arguments, so that maps can be reused without conversion.
13751375 let map_refs: Vec < ( & str , & [ u8 ] ) > =
13761376 map. iter ( ) . map ( |x| ( x. 0 . as_ref ( ) , x. 1 . as_ref ( ) ) ) . collect ( ) ;
1377- let serialized_map = serialize_map_bytes ( map_refs) ;
1377+ let serialized_map = serialize_map_bytes ( & map_refs) ;
13781378 assert_eq ! ( serialized_map, SERIALIZED_MAP ) ;
13791379 }
13801380
@@ -1387,7 +1387,7 @@ mod utils {
13871387 // TODO(v0.3): fix arguments, so that maps can be reused without conversion.
13881388 let map_refs: Vec < ( & str , & str ) > =
13891389 map. iter ( ) . map ( |x| ( x. 0 . as_ref ( ) , x. 1 . as_ref ( ) ) ) . collect ( ) ;
1390- let serialized_map = serialize_map ( map_refs) ;
1390+ let serialized_map = serialize_map ( & map_refs) ;
13911391 assert_eq ! ( serialized_map, serialized_src) ;
13921392 }
13931393 // 0x80-0xff are invalid single-byte UTF-8 characters.
@@ -1410,7 +1410,7 @@ mod utils {
14101410 // TODO(v0.3): fix arguments, so that maps can be reused without conversion.
14111411 let map_refs: Vec < ( & str , & [ u8 ] ) > =
14121412 map. iter ( ) . map ( |x| ( x. 0 . as_ref ( ) , x. 1 . as_ref ( ) ) ) . collect ( ) ;
1413- let serialized_map = serialize_map_bytes ( map_refs) ;
1413+ let serialized_map = serialize_map_bytes ( & map_refs) ;
14141414 assert_eq ! ( serialized_map, serialized_src) ;
14151415 }
14161416 }
@@ -1420,7 +1420,7 @@ mod utils {
14201420 fn bench_serialize_map ( b : & mut Bencher ) {
14211421 let map = MAP . to_vec ( ) ;
14221422 b. iter ( || {
1423- serialize_map ( test:: black_box ( map. clone ( ) ) ) ;
1423+ serialize_map ( test:: black_box ( & map) ) ;
14241424 } ) ;
14251425 }
14261426
@@ -1429,7 +1429,7 @@ mod utils {
14291429 fn bench_serialize_map_bytes ( b : & mut Bencher ) {
14301430 let map: Vec < ( & str , & [ u8 ] ) > = MAP . iter ( ) . map ( |x| ( x. 0 , x. 1 . as_bytes ( ) ) ) . collect ( ) ;
14311431 b. iter ( || {
1432- serialize_map_bytes ( test:: black_box ( map. clone ( ) ) ) ;
1432+ serialize_map_bytes ( test:: black_box ( & map) ) ;
14331433 } ) ;
14341434 }
14351435
0 commit comments