@@ -104,7 +104,7 @@ impl RegisterBrokerBody {
104104 }
105105 let bytes = bytes_mut. freeze ( ) ;
106106
107- let mut encoder = DeflateEncoder :: new ( Vec :: new ( ) , Compression :: default ( ) ) ;
107+ let mut encoder = DeflateEncoder :: new ( Vec :: new ( ) , Compression :: best ( ) ) ;
108108 encoder. write_all ( bytes. as_ref ( ) ) . unwrap ( ) ;
109109 encoder. finish ( ) . unwrap ( )
110110 }
@@ -120,13 +120,13 @@ impl RegisterBrokerBody {
120120 return SerdeJsonUtils :: decode :: < RegisterBrokerBody > ( bytes. iter ( ) . as_slice ( ) ) . unwrap ( ) ;
121121 }
122122 let mut decoder = DeflateDecoder :: new ( bytes. as_ref ( ) ) ;
123- let mut bytes_mut = BytesMut :: new ( ) ;
124- let result = decoder. read ( & mut bytes_mut ) ;
123+ let mut vec = Vec :: new ( ) ;
124+ let result = decoder. read_to_end ( & mut vec ) ;
125125 let mut register_broker_body = RegisterBrokerBody :: default ( ) ;
126126 if result. is_err ( ) {
127127 return register_broker_body;
128128 }
129- let mut bytes = bytes_mut . freeze ( ) ;
129+ let mut bytes = Bytes :: from ( vec ) ;
130130 let data_version_length = bytes. get_i32 ( ) ;
131131 let data_version_bytes = bytes. copy_to_bytes ( data_version_length as usize ) ;
132132 let data_version = DataVersion :: decode ( data_version_bytes. as_ref ( ) ) . unwrap ( ) ;
@@ -209,4 +209,35 @@ mod tests {
209209 RegisterBrokerBody :: decode ( & Bytes :: from ( encoded) , false , RocketMqVersion :: V500 ) ;
210210 assert_eq ! ( decoded. filter_server_list, body. filter_server_list) ;
211211 }
212+
213+ #[ test]
214+ fn test_encode ( ) {
215+ let mut register_broker_body = RegisterBrokerBody :: default ( ) ;
216+ let mut topic_config_table = HashMap :: new ( ) ;
217+ for i in 0 ..1 {
218+ topic_config_table. insert (
219+ CheetahString :: from_string ( i. to_string ( ) ) ,
220+ TopicConfig :: new ( CheetahString :: from_string ( i. to_string ( ) ) ) ,
221+ ) ;
222+ }
223+ register_broker_body
224+ . topic_config_serialize_wrapper
225+ . topic_config_serialize_wrapper
226+ . topic_config_table = topic_config_table;
227+ let compare_encode = register_broker_body. encode ( true ) ;
228+ let compare_decode =
229+ RegisterBrokerBody :: decode ( & Bytes :: from ( compare_encode) , true , RocketMqVersion :: V500 ) ;
230+ assert_eq ! (
231+ register_broker_body
232+ . topic_config_serialize_wrapper
233+ . topic_config_serialize_wrapper
234+ . topic_config_table
235+ . get( "1" ) ,
236+ compare_decode
237+ . topic_config_serialize_wrapper
238+ . topic_config_serialize_wrapper
239+ . topic_config_table
240+ . get( "1" )
241+ ) ;
242+ }
212243}
0 commit comments