@@ -30,6 +30,7 @@ use crate::merkle_tree::MerkleBlock;
3030use crate :: network:: address:: { AddrV2Message , Address } ;
3131use crate :: network:: {
3232 message_blockdata, message_bloom, message_compact_blocks, message_filter, message_network,
33+ message_sml,
3334} ;
3435use crate :: prelude:: * ;
3536
@@ -236,7 +237,10 @@ pub enum NetworkMessage {
236237 AddrV2 ( Vec < AddrV2Message > ) ,
237238 /// `sendaddrv2`
238239 SendAddrV2 ,
239-
240+ /// `getmnlistd`
241+ GetMnListD ( message_sml:: GetMnListDiff ) ,
242+ /// `mnlistdiff`
243+ MnListDiff ( message_sml:: MnListDiff ) ,
240244 /// Any other message.
241245 Unknown {
242246 /// The command of this message.
@@ -290,6 +294,8 @@ impl NetworkMessage {
290294 NetworkMessage :: WtxidRelay => "wtxidrelay" ,
291295 NetworkMessage :: AddrV2 ( _) => "addrv2" ,
292296 NetworkMessage :: SendAddrV2 => "sendaddrv2" ,
297+ NetworkMessage :: GetMnListD ( _) => "getmnlistd" ,
298+ NetworkMessage :: MnListDiff ( _) => "mnlistdiff" ,
293299 NetworkMessage :: Unknown { .. } => "unknown" ,
294300 }
295301 }
@@ -373,6 +379,8 @@ impl Encodable for RawNetworkMessage {
373379 | NetworkMessage :: FilterClear
374380 | NetworkMessage :: SendAddrV2 => vec ! [ ] ,
375381 NetworkMessage :: Unknown { payload : ref data, .. } => serialize ( data) ,
382+ NetworkMessage :: GetMnListD ( ref dat) => serialize ( dat) ,
383+ NetworkMessage :: MnListDiff ( ref dat) => serialize ( dat) ,
376384 } )
377385 . consensus_encode ( w) ?;
378386 Ok ( len)
@@ -498,6 +506,12 @@ impl Decodable for RawNetworkMessage {
498506 "addrv2" =>
499507 NetworkMessage :: AddrV2 ( Decodable :: consensus_decode_from_finite_reader ( & mut mem_d) ?) ,
500508 "sendaddrv2" => NetworkMessage :: SendAddrV2 ,
509+ "getmnlistd" => NetworkMessage :: GetMnListD (
510+ Decodable :: consensus_decode_from_finite_reader ( & mut mem_d) ?,
511+ ) ,
512+ "mnlistdiff" => NetworkMessage :: MnListDiff (
513+ Decodable :: consensus_decode_from_finite_reader ( & mut mem_d) ?,
514+ ) ,
501515 _ => NetworkMessage :: Unknown { command : cmd, payload : mem_d. into_inner ( ) } ,
502516 } ;
503517 Ok ( RawNetworkMessage { magic, payload } )
@@ -756,10 +770,8 @@ mod test {
756770 0x10 , 0x2f , 0x53 , 0x61 , 0x74 , 0x6f , 0x73 , 0x68 ,
757771 0x69 , 0x3a , 0x30 , 0x2e , 0x31 , 0x37 , 0x2e , 0x31 ,
758772 0x2f , 0x93 , 0x8c , 0x08 , 0x00 , 0x01
759- ] ) ;
773+ ] ) . expect ( "deserialize version message" ) ;
760774
761- assert ! ( msg. is_ok( ) ) ;
762- let msg = msg. unwrap ( ) ;
763775 assert_eq ! ( msg. magic, 0xd9b4bef9 ) ;
764776 if let NetworkMessage :: Version ( version_msg) = msg. payload {
765777 assert_eq ! ( version_msg. version, 70015 ) ;
@@ -801,10 +813,9 @@ mod test {
801813 0x69 , 0x3a , 0x30 , 0x2e , 0x31 , 0x37 , 0x2e , 0x31 ,
802814 0x2f , 0x93 , 0x8c , 0x08 , 0x00 , 0x01 , 0x00 , 0x00
803815 ] ;
804- let msg = deserialize_partial :: < RawNetworkMessage > ( & data ) ;
805- assert ! ( msg . is_ok ( ) ) ;
816+ let ( msg, consumed ) =
817+ deserialize_partial :: < RawNetworkMessage > ( & data ) . expect ( "deserialize partial message" ) ;
806818
807- let ( msg, consumed) = msg. unwrap ( ) ;
808819 assert_eq ! ( consumed, data. to_vec( ) . len( ) - 2 ) ;
809820 assert_eq ! ( msg. magic, 0xd9b4bef9 ) ;
810821 if let NetworkMessage :: Version ( version_msg) = msg. payload {
0 commit comments