@@ -66,7 +66,8 @@ impl fmt::Display for XArguments {
66
66
}
67
67
}
68
68
69
- #[ derive( Debug , Deserialize , Clone ) ]
69
+ #[ derive( Debug , Deserialize , Clone , Default ) ]
70
+ #[ serde( transparent) ]
70
71
pub struct RuntimeParameterValue ( pub Map < String , serde_json:: Value > ) ;
71
72
impl fmt:: Display for RuntimeParameterValue {
72
73
fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
@@ -524,43 +525,6 @@ pub struct RuntimeParameter {
524
525
pub value : RuntimeParameterValue ,
525
526
}
526
527
527
- fn deserialize_runtime_parameter_value < ' de , D > (
528
- deserializer : D ,
529
- ) -> Result < RuntimeParameterValue , D :: Error >
530
- where
531
- D : serde:: Deserializer < ' de > ,
532
- {
533
- struct RuntimeParameterValueVisitor ;
534
-
535
- impl < ' de > Visitor < ' de > for RuntimeParameterValueVisitor {
536
- type Value = RuntimeParameterValue ;
537
-
538
- fn expecting ( & self , formatter : & mut fmt:: Formatter ) -> fmt:: Result {
539
- formatter. write_str ( "a runtime parameter" )
540
- }
541
-
542
- fn visit_seq < A > ( self , _seq : A ) -> Result < Self :: Value , A :: Error >
543
- where
544
- A : serde:: de:: SeqAccess < ' de > ,
545
- {
546
- // Always deserialize the value as a map, even if the server
547
- // sends a sequence.
548
- Ok ( RuntimeParameterValue ( Map :: new ( ) ) )
549
- }
550
-
551
- fn visit_map < A > ( self , map : A ) -> Result < Self :: Value , A :: Error >
552
- where
553
- A : MapAccess < ' de > ,
554
- {
555
- let deserializer = serde:: de:: value:: MapAccessDeserializer :: new ( map) ;
556
- let m = Deserialize :: deserialize ( deserializer) ?;
557
- Ok ( RuntimeParameterValue ( m) )
558
- }
559
- }
560
-
561
- deserializer. deserialize_any ( RuntimeParameterValueVisitor )
562
- }
563
-
564
528
#[ derive( Debug , Deserialize , Clone ) ]
565
529
#[ allow( dead_code) ]
566
530
pub struct ClusterIdentity {
@@ -639,6 +603,104 @@ pub struct QuorumEndangeredQueue {
639
603
pub queue_type : String ,
640
604
}
641
605
606
+ #[ derive( Debug , Deserialize , Clone , Eq , PartialEq ) ]
607
+ #[ cfg_attr( feature = "tabled" , derive( Tabled ) ) ]
608
+ #[ allow( dead_code) ]
609
+ pub struct GetMessage {
610
+ pub payload_bytes : i32 ,
611
+ pub redelivered : bool ,
612
+ pub exchange : String ,
613
+ pub routing_key : String ,
614
+ pub message_count : i32 ,
615
+ #[ serde( deserialize_with = "deserialize_message_properties" ) ]
616
+ pub properties : MessageProperties ,
617
+ pub payload : String ,
618
+ pub payload_encoding : String ,
619
+ }
620
+
621
+ #[ derive( Debug , Deserialize , Clone , Eq , PartialEq ) ]
622
+ pub struct MessageRouted {
623
+ pub routed : bool ,
624
+ }
625
+
626
+ impl fmt:: Display for MessageRouted {
627
+ fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
628
+ match self . routed {
629
+ true => write ! ( f, "Message published and routed successfully" ) ,
630
+ false => write ! ( f, "Message published but NOT routed" ) ,
631
+ }
632
+ }
633
+ }
634
+
635
+ #[ derive( Debug , Deserialize , Clone , Eq , PartialEq , Default ) ]
636
+ #[ serde( transparent) ]
637
+ pub struct MessageProperties ( pub Map < String , serde_json:: Value > ) ;
638
+
639
+ impl fmt:: Display for MessageProperties {
640
+ fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
641
+ for ( k, v) in & self . 0 {
642
+ writeln ! ( f, "{}: {}" , k, v) ?;
643
+ }
644
+
645
+ Ok ( ( ) )
646
+ }
647
+ }
648
+
642
649
fn undefined ( ) -> String {
643
650
"?" . to_string ( )
644
651
}
652
+
653
+ fn deserialize_map_or_seq < ' de , T , D > ( deserializer : D ) -> Result < T , D :: Error >
654
+ where
655
+ T : Default + serde:: Deserialize < ' de > ,
656
+ D : serde:: Deserializer < ' de > ,
657
+ {
658
+ struct MapVisitor < T > {
659
+ default : T ,
660
+ }
661
+
662
+ impl < ' de , T : serde:: Deserialize < ' de > > Visitor < ' de > for MapVisitor < T > {
663
+ type Value = T ;
664
+
665
+ fn expecting ( & self , formatter : & mut fmt:: Formatter ) -> fmt:: Result {
666
+ formatter. write_str ( "map" )
667
+ }
668
+
669
+ fn visit_map < A > ( self , map : A ) -> Result < Self :: Value , A :: Error >
670
+ where
671
+ A : MapAccess < ' de > ,
672
+ {
673
+ let deserializer = serde:: de:: value:: MapAccessDeserializer :: new ( map) ;
674
+ let m = Deserialize :: deserialize ( deserializer) ?;
675
+ Ok ( m)
676
+ }
677
+
678
+ fn visit_seq < A > ( self , _seq : A ) -> Result < Self :: Value , A :: Error >
679
+ where
680
+ A : serde:: de:: SeqAccess < ' de > ,
681
+ {
682
+ // Treat a sequence as the default for the type.
683
+ Ok ( self . default )
684
+ }
685
+ }
686
+
687
+ deserializer. deserialize_any ( MapVisitor {
688
+ default : T :: default ( ) ,
689
+ } )
690
+ }
691
+
692
+ fn deserialize_message_properties < ' de , D > ( deserializer : D ) -> Result < MessageProperties , D :: Error >
693
+ where
694
+ D : serde:: Deserializer < ' de > ,
695
+ {
696
+ deserialize_map_or_seq :: < MessageProperties , D > ( deserializer)
697
+ }
698
+
699
+ fn deserialize_runtime_parameter_value < ' de , D > (
700
+ deserializer : D ,
701
+ ) -> Result < RuntimeParameterValue , D :: Error >
702
+ where
703
+ D : serde:: Deserializer < ' de > ,
704
+ {
705
+ deserialize_map_or_seq :: < RuntimeParameterValue , D > ( deserializer)
706
+ }
0 commit comments