1- use std:: cmp:: Ordering ;
21use std:: net:: IpAddr ;
3-
4- use hashes:: Hash ;
5-
62use crate :: ProTxHash ;
73use crate :: sml:: masternode_list:: MasternodeList ;
8- use crate :: sml:: masternode_list_entry:: qualified_masternode_list_entry:: QualifiedMasternodeListEntry ;
94
105impl MasternodeList {
11- pub fn masternode_for (
12- & self ,
13- pro_reg_tx_hash : & ProTxHash ,
14- ) -> Option < & QualifiedMasternodeListEntry > {
15- self . masternodes . get ( pro_reg_tx_hash)
16- }
17-
186 pub fn has_valid_masternode ( & self , pro_reg_tx_hash : & ProTxHash ) -> bool {
197 self . masternodes
208 . get ( pro_reg_tx_hash)
219 . map_or ( false , |node| node. masternode_list_entry . is_valid )
2210 }
2311
24- pub fn has_masternode ( & self , pro_reg_tx_hash : & ProTxHash ) -> bool {
25- self . masternodes . get ( pro_reg_tx_hash) . is_some ( )
26- }
2712 pub fn has_masternode_at_location ( & self , address : [ u8 ; 16 ] , port : u16 ) -> bool {
2813 self . masternodes . values ( ) . any ( |node| {
2914 match node. masternode_list_entry . service_address . ip ( ) {
@@ -40,46 +25,10 @@ impl MasternodeList {
4025 }
4126 } )
4227 }
43- pub fn masternode_count ( & self ) -> usize { self . masternodes . len ( ) }
44-
45- pub fn masternode_by_pro_reg_tx_hash (
46- & self ,
47- registration_hash : & ProTxHash ,
48- ) -> Option < QualifiedMasternodeListEntry > {
49- self . masternodes . get ( registration_hash) . cloned ( )
50- }
5128
52- pub fn reversed_pro_reg_tx_hashes_cloned ( & self ) -> Vec < ProTxHash > {
53- self . masternodes . keys ( ) . cloned ( ) . collect ( )
54- }
5529 pub fn reversed_pro_reg_tx_hashes ( & self ) -> Vec < & ProTxHash > {
5630 self . masternodes . keys ( ) . collect ( )
5731 }
58-
59- pub fn sorted_reversed_pro_reg_tx_hashes ( & self ) -> Vec < & ProTxHash > {
60- let mut hashes = self . reversed_pro_reg_tx_hashes ( ) ;
61- hashes. sort_by ( |& s1, & s2| s2. reverse ( ) . cmp ( & s1. reverse ( ) ) ) ;
62- hashes
63- }
64-
65- pub fn provider_tx_ordered_hashes ( & self ) -> Vec < ProTxHash > {
66- let mut vec = Vec :: from_iter ( self . masternodes . keys ( ) . cloned ( ) ) ;
67- vec. sort_by ( |hash1, hash2| {
68- if reverse_cmp_sup ( hash1. to_byte_array ( ) , hash2. to_byte_array ( ) ) {
69- Ordering :: Greater
70- } else {
71- Ordering :: Less
72- }
73- } ) ;
74- vec
75- }
76- pub fn compare_provider_tx_ordered_hashes ( & self , list : MasternodeList ) -> bool {
77- self . provider_tx_ordered_hashes ( ) . eq ( & list. provider_tx_ordered_hashes ( ) )
78- }
79-
80- pub fn compare_masternodes ( & self , list : MasternodeList ) -> bool {
81- self . masternodes . values ( ) . eq ( list. masternodes . values ( ) )
82- }
8332}
8433
8534pub fn reverse_cmp_sup ( lhs : [ u8 ; 32 ] , rhs : [ u8 ; 32 ] ) -> bool {
0 commit comments