1
+ use std:: collections:: HashMap ;
1
2
use std:: io:: { self , Read } ;
2
3
use std:: net:: SocketAddr ;
3
4
use std:: time:: Duration ;
@@ -9,8 +10,8 @@ use codecs::{BytesDeserializerConfig, StreamDecodingError};
9
10
use flate2:: read:: MultiGzDecoder ;
10
11
use lookup:: lookup_v2:: parse_value_path;
11
12
use lookup:: { metadata_path, owned_value_path, path, OwnedValuePath , PathPrefix } ;
12
- use rmp_serde:: { decode, Deserializer } ;
13
- use serde:: Deserialize ;
13
+ use rmp_serde:: { decode, Deserializer , Serializer } ;
14
+ use serde:: { Deserialize , Serialize } ;
14
15
use smallvec:: { smallvec, SmallVec } ;
15
16
use tokio_util:: codec:: Decoder ;
16
17
use vector_config:: configurable_component;
@@ -532,15 +533,17 @@ impl TcpSourceAcker for FluentAcker {
532
533
return None ;
533
534
}
534
535
535
- let mut acks = String :: new ( ) ;
536
+ let mut buf = Vec :: new ( ) ;
537
+ let mut ser = Serializer :: new ( & mut buf) ;
538
+
536
539
for chunk in self . chunks {
537
- let ack = match ack {
538
- TcpSourceAck :: Ack => format ! ( r#"{{" ack": "{}"}}"# , chunk ) ,
539
- _ => String :: from ( "{}" ) ,
540
+ let mut ackmap = HashMap :: new ( ) ;
541
+ if let TcpSourceAck :: Ack = ack {
542
+ ackmap . insert ( "ack" , chunk ) ;
540
543
} ;
541
- acks . push_str ( & ack ) ;
544
+ ackmap . serialize ( & mut ser ) . unwrap ( ) ;
542
545
}
543
- Some ( acks . into ( ) )
546
+ Some ( buf . into ( ) )
544
547
}
545
548
}
546
549
@@ -861,7 +864,8 @@ mod tests {
861
864
async fn ack_delivered_with_chunk ( ) {
862
865
let ( result, output) = check_acknowledgements ( EventStatus :: Delivered , true ) . await ;
863
866
assert_eq ! ( result. unwrap( ) . unwrap( ) , output. len( ) ) ;
864
- assert ! ( output. starts_with( b"{\" ack\" :" ) ) ;
867
+ let expected: Vec < u8 > = vec ! [ 0x81 , 0xa3 , 0x61 , 0x63 ] ; // { "ack": ...
868
+ assert_eq ! ( output[ ..expected. len( ) ] , expected) ;
865
869
}
866
870
867
871
#[ tokio:: test]
@@ -875,7 +879,8 @@ mod tests {
875
879
async fn ack_failed_with_chunk ( ) {
876
880
let ( result, output) = check_acknowledgements ( EventStatus :: Rejected , true ) . await ;
877
881
assert_eq ! ( result. unwrap( ) . unwrap( ) , output. len( ) ) ;
878
- assert_eq ! ( output, & b"{}" [ ..] ) ;
882
+ let expected: Vec < u8 > = vec ! [ 0x80 ] ; // { }
883
+ assert_eq ! ( output, expected) ;
879
884
}
880
885
881
886
async fn check_acknowledgements (
0 commit comments