@@ -77,13 +77,14 @@ where
7777 let mut amqp_message_builder = AmqpMessage :: builder ( ) ;
7878
7979 if let Some ( application_properties) = message. application_properties {
80- amqp_message_builder. with_application_properties ( application_properties. into ( ) ) ;
80+ amqp_message_builder =
81+ amqp_message_builder. with_application_properties ( application_properties. into ( ) ) ;
8182 }
8283
8384 let body = message. body ;
8485 if body. is_empty ( ) {
8586 let body = AmqpMessageBody :: Empty ;
86- amqp_message_builder. with_body ( body) ;
87+ amqp_message_builder = amqp_message_builder . with_body ( body) ;
8788 } else if body. is_data ( ) {
8889 let data = body. try_into_data ( ) . map_err ( |_| {
8990 Error :: message (
9293 )
9394 } ) ?;
9495 let body = AmqpMessageBody :: Binary ( data. map ( |x| x. to_vec ( ) ) . collect ( ) ) ;
95- amqp_message_builder. with_body ( body) ;
96+ amqp_message_builder = amqp_message_builder . with_body ( body) ;
9697 } else if body. is_value ( ) {
9798 let value = body. try_into_value ( ) . map_err ( |_| {
9899 Error :: message (
@@ -103,7 +104,7 @@ where
103104 // Because a conversion exists between fe2o3 values and AmqpValue types,
104105 // this try_into will always succeed.
105106 let value = value. try_into ( ) . unwrap ( ) ;
106- amqp_message_builder. with_body ( AmqpMessageBody :: Value ( value) ) ;
107+ amqp_message_builder = amqp_message_builder . with_body ( AmqpMessageBody :: Value ( value) ) ;
107108 } else if body. is_sequence ( ) {
108109 let sequence = body. try_into_sequence ( ) . map_err ( |_| {
109110 Error :: message (
@@ -125,27 +126,29 @@ where
125126 } )
126127 . collect ( ) ,
127128 ) ;
128- amqp_message_builder. with_body ( body) ;
129+ amqp_message_builder = amqp_message_builder . with_body ( body) ;
129130 }
130131
131132 if let Some ( header) = message. header {
132- amqp_message_builder. with_header ( header. into ( ) ) ;
133+ amqp_message_builder = amqp_message_builder . with_header ( header. into ( ) ) ;
133134 }
134135
135136 if let Some ( properties) = message. properties {
136- amqp_message_builder. with_properties ( properties) ;
137+ amqp_message_builder = amqp_message_builder . with_properties ( properties) ;
137138 }
138139
139140 if let Some ( delivery_annotations) = message. delivery_annotations {
140- amqp_message_builder. with_delivery_annotations ( delivery_annotations. 0 . into ( ) ) ;
141+ amqp_message_builder =
142+ amqp_message_builder. with_delivery_annotations ( delivery_annotations. 0 . into ( ) ) ;
141143 }
142144
143145 if let Some ( message_annotations) = message. message_annotations {
144- amqp_message_builder. with_message_annotations ( message_annotations. 0 . into ( ) ) ;
146+ amqp_message_builder =
147+ amqp_message_builder. with_message_annotations ( message_annotations. 0 . into ( ) ) ;
145148 }
146149
147150 if let Some ( footer) = message. footer {
148- amqp_message_builder. with_footer ( footer. 0 . into ( ) ) ;
151+ amqp_message_builder = amqp_message_builder . with_footer ( footer. 0 . into ( ) ) ;
149152 }
150153
151154 Ok ( amqp_message_builder. build ( ) )
@@ -211,114 +214,134 @@ impl
211214 ) -> Self {
212215 let mut amqp_message_builder = AmqpMessage :: builder ( ) ;
213216
214- amqp_message_builder. with_body ( AmqpMessageBody :: Empty ) ;
217+ amqp_message_builder = amqp_message_builder . with_body ( AmqpMessageBody :: Empty ) ;
215218
216219 if let Some ( application_properties) = message. application_properties {
217- amqp_message_builder. with_application_properties ( application_properties. into ( ) ) ;
220+ amqp_message_builder =
221+ amqp_message_builder. with_application_properties ( application_properties. into ( ) ) ;
218222 }
219223
220224 if let Some ( header) = message. header {
221- amqp_message_builder. with_header ( header. into ( ) ) ;
225+ amqp_message_builder = amqp_message_builder . with_header ( header. into ( ) ) ;
222226 }
223227
224228 if let Some ( properties) = message. properties {
225229 info ! ( "Converting properties to AmqpMessageProperties" ) ;
226- amqp_message_builder. with_properties ( properties) ;
230+ amqp_message_builder = amqp_message_builder . with_properties ( properties) ;
227231 }
228232
229233 if let Some ( delivery_annotations) = message. delivery_annotations {
230- amqp_message_builder. with_delivery_annotations ( delivery_annotations. 0 . into ( ) ) ;
234+ amqp_message_builder =
235+ amqp_message_builder. with_delivery_annotations ( delivery_annotations. 0 . into ( ) ) ;
231236 }
232237
233238 if let Some ( message_annotations) = message. message_annotations {
234- amqp_message_builder. with_message_annotations ( message_annotations. 0 . into ( ) ) ;
239+ amqp_message_builder =
240+ amqp_message_builder. with_message_annotations ( message_annotations. 0 . into ( ) ) ;
235241 }
236242
237243 if let Some ( footer) = message. footer {
238- amqp_message_builder. with_footer ( footer. 0 . into ( ) ) ;
244+ amqp_message_builder = amqp_message_builder . with_footer ( footer. 0 . into ( ) ) ;
239245 }
240246
241247 amqp_message_builder. build ( )
242248 }
243249}
244250
251+ fn fe2o3_message_from_amqp_message (
252+ message : & AmqpMessage ,
253+ ) -> fe2o3_amqp_types:: messaging:: Message <
254+ fe2o3_amqp_types:: messaging:: Body < fe2o3_amqp_types:: primitives:: Value > ,
255+ > {
256+ let message_builder = fe2o3_amqp_types:: messaging:: Message :: builder ( )
257+ . application_properties ( message. application_properties ( ) . map ( |x| x. clone ( ) . into ( ) ) )
258+ . properties ( message. properties ( ) . map ( |p| p. clone ( ) . into ( ) ) )
259+ . header ( message. header ( ) . map ( |x| x. clone ( ) . into ( ) ) )
260+ . delivery_annotations ( message. delivery_annotations ( ) . map ( |x| x. clone ( ) . into ( ) ) )
261+ . message_annotations ( message. message_annotations ( ) . map ( |x| x. clone ( ) . into ( ) ) )
262+ . footer ( message. footer ( ) . map ( |x| x. clone ( ) . into ( ) ) ) ;
263+
264+ match message. body ( ) {
265+ AmqpMessageBody :: Value ( value) => {
266+ let value: fe2o3_amqp_types:: primitives:: Value = value. clone ( ) . into ( ) ;
267+ let value = fe2o3_amqp_types:: messaging:: Body :: Value ( value. into_body ( ) ) ;
268+ let message_builder = message_builder. body ( value) ;
269+ message_builder. build ( )
270+ }
271+ AmqpMessageBody :: Binary ( data) => {
272+ let data: Vec < serde_bytes:: ByteBuf > = data
273+ . clone ( )
274+ . into_iter ( )
275+ . map ( serde_bytes:: ByteBuf :: from)
276+ . collect ( ) ;
277+ let message_builder = message_builder. body ( fe2o3_amqp_types:: messaging:: Body :: Data (
278+ data. into_iter ( ) . map ( |x| x. into ( ) ) . collect ( ) ,
279+ ) ) ;
280+ message_builder. build ( )
281+ }
282+ AmqpMessageBody :: Empty => message_builder
283+ . body ( fe2o3_amqp_types:: messaging:: Body :: Empty )
284+ . build ( ) ,
285+ AmqpMessageBody :: Sequence ( sequence) => {
286+ let sequence: TransparentVec <
287+ fe2o3_amqp_types:: primitives:: List < fe2o3_amqp_types:: primitives:: Value > ,
288+ > = sequence
289+ . iter ( )
290+ . map ( |x| {
291+ let mut l = fe2o3_amqp_types:: primitives:: List :: new ( ) ;
292+ let c = x
293+ . clone ( )
294+ . 0
295+ . into_iter ( )
296+ . map ( |v| Into :: < fe2o3_amqp_types:: primitives:: Value > :: into ( v. clone ( ) ) ) ;
297+ for v in c {
298+ l. push ( v) ;
299+ }
300+ l
301+ } )
302+ . collect ( ) ;
303+ let amqp_sequence = TransparentVec :: <
304+ fe2o3_amqp_types:: messaging:: AmqpSequence < fe2o3_amqp_types:: primitives:: Value > ,
305+ > :: new (
306+ sequence
307+ . into_iter ( )
308+ . map ( |x| {
309+ x. into_iter ( )
310+ . collect :: < fe2o3_amqp_types:: primitives:: List <
311+ fe2o3_amqp_types:: primitives:: Value ,
312+ > > ( )
313+ . into ( )
314+ } )
315+ . collect :: < Vec <
316+ fe2o3_amqp_types:: messaging:: AmqpSequence <
317+ fe2o3_amqp_types:: primitives:: Value ,
318+ > ,
319+ > > ( ) ,
320+ ) ;
321+
322+ let message_builder =
323+ message_builder. body ( fe2o3_amqp_types:: messaging:: Body :: Sequence ( amqp_sequence) ) ;
324+ message_builder. build ( )
325+ }
326+ }
327+ }
328+
245329impl From < AmqpMessage >
246330 for fe2o3_amqp_types:: messaging:: Message <
247331 fe2o3_amqp_types:: messaging:: Body < fe2o3_amqp_types:: primitives:: Value > ,
248332 >
249333{
250334 fn from ( message : AmqpMessage ) -> Self {
251- let message_builder = fe2o3_amqp_types:: messaging:: Message :: builder ( )
252- . application_properties ( message. application_properties ( ) . map ( |x| x. clone ( ) . into ( ) ) )
253- . properties ( message. properties ( ) . map ( |p| p. clone ( ) . into ( ) ) )
254- . header ( message. header ( ) . map ( |x| x. clone ( ) . into ( ) ) )
255- . delivery_annotations ( message. delivery_annotations ( ) . map ( |x| x. clone ( ) . into ( ) ) )
256- . message_annotations ( message. message_annotations ( ) . map ( |x| x. clone ( ) . into ( ) ) )
257- . footer ( message. footer ( ) . map ( |x| x. clone ( ) . into ( ) ) ) ;
258-
259- match message. body ( ) {
260- AmqpMessageBody :: Value ( value) => {
261- let value: fe2o3_amqp_types:: primitives:: Value = value. clone ( ) . into ( ) ;
262- let value = fe2o3_amqp_types:: messaging:: Body :: Value ( value. into_body ( ) ) ;
263- let message_builder = message_builder. body ( value) ;
264- message_builder. build ( )
265- }
266- AmqpMessageBody :: Binary ( data) => {
267- let data: Vec < serde_bytes:: ByteBuf > = data
268- . clone ( )
269- . into_iter ( )
270- . map ( serde_bytes:: ByteBuf :: from)
271- . collect ( ) ;
272- let message_builder =
273- message_builder. body ( fe2o3_amqp_types:: messaging:: Body :: Data (
274- data. into_iter ( ) . map ( |x| x. into ( ) ) . collect ( ) ,
275- ) ) ;
276- message_builder. build ( )
277- }
278- AmqpMessageBody :: Empty => message_builder
279- . body ( fe2o3_amqp_types:: messaging:: Body :: Empty )
280- . build ( ) ,
281- AmqpMessageBody :: Sequence ( sequence) => {
282- let sequence: TransparentVec <
283- fe2o3_amqp_types:: primitives:: List < fe2o3_amqp_types:: primitives:: Value > ,
284- > = sequence
285- . iter ( )
286- . map ( |x| {
287- let mut l = fe2o3_amqp_types:: primitives:: List :: new ( ) ;
288- let c =
289- x. clone ( ) . 0 . into_iter ( ) . map ( |v| {
290- Into :: < fe2o3_amqp_types:: primitives:: Value > :: into ( v. clone ( ) )
291- } ) ;
292- for v in c {
293- l. push ( v) ;
294- }
295- l
296- } )
297- . collect ( ) ;
298- let amqp_sequence = TransparentVec :: <
299- fe2o3_amqp_types:: messaging:: AmqpSequence < fe2o3_amqp_types:: primitives:: Value > ,
300- > :: new (
301- sequence
302- . into_iter ( )
303- . map ( |x| {
304- x. into_iter ( )
305- . collect :: < fe2o3_amqp_types:: primitives:: List <
306- fe2o3_amqp_types:: primitives:: Value ,
307- > > ( )
308- . into ( )
309- } )
310- . collect :: < Vec <
311- fe2o3_amqp_types:: messaging:: AmqpSequence <
312- fe2o3_amqp_types:: primitives:: Value ,
313- > ,
314- > > ( ) ,
315- ) ;
316-
317- let message_builder = message_builder
318- . body ( fe2o3_amqp_types:: messaging:: Body :: Sequence ( amqp_sequence) ) ;
319- message_builder. build ( )
320- }
321- }
335+ fe2o3_message_from_amqp_message ( & message)
336+ }
337+ }
338+ impl From < & AmqpMessage >
339+ for fe2o3_amqp_types:: messaging:: Message <
340+ fe2o3_amqp_types:: messaging:: Body < fe2o3_amqp_types:: primitives:: Value > ,
341+ >
342+ {
343+ fn from ( message : & AmqpMessage ) -> Self {
344+ fe2o3_message_from_amqp_message ( message)
322345 }
323346}
324347
0 commit comments