@@ -39,8 +39,8 @@ struct Cip0134UriSetInner {
3939 x_uris : UrisMap ,
4040 /// URIs from c509 certificates.
4141 c_uris : UrisMap ,
42- /// URIs which are taken by another chains.
43- taken : HashSet < Cip0134Uri > ,
42+ /// `StakeAddress` which are taken by another chains.
43+ taken_stake_addresses : HashSet < StakeAddress > ,
4444}
4545
4646impl Cip0134UriSet {
@@ -53,11 +53,11 @@ impl Cip0134UriSet {
5353 ) -> Self {
5454 let x_uris = extract_x509_uris ( x509_certs, report) ;
5555 let c_uris = extract_c509_uris ( c509_certs, report) ;
56- let taken_uris = HashSet :: new ( ) ;
56+ let taken_stake_addresses = HashSet :: new ( ) ;
5757 Self ( Arc :: new ( Cip0134UriSetInner {
5858 x_uris,
5959 c_uris,
60- taken : taken_uris ,
60+ taken_stake_addresses ,
6161 } ) )
6262 }
6363
@@ -73,13 +73,12 @@ impl Cip0134UriSet {
7373 & self . 0 . c_uris
7474 }
7575
76- /// Returns an iterator over of active (without taken) `Cip0134Uri`.
76+ /// Returns an iterator over of `Cip0134Uri`.
7777 pub ( crate ) fn values ( & self ) -> impl Iterator < Item = & Cip0134Uri > {
7878 self . x_uris ( )
7979 . values ( )
8080 . chain ( self . c_uris ( ) . values ( ) )
8181 . flat_map ( |uris| uris. iter ( ) )
82- . filter ( |v| !self . 0 . taken . contains ( v) )
8382 }
8483
8584 /// Returns `true` if both x509 and c509 certificate maps are empty.
@@ -88,7 +87,7 @@ impl Cip0134UriSet {
8887 self . x_uris ( ) . is_empty ( ) && self . c_uris ( ) . is_empty ( )
8988 }
9089
91- /// Returns a list of active (without taken) URIs by the given role.
90+ /// Returns a list of URIs by the given role.
9291 #[ must_use]
9392 pub ( crate ) fn role_uris (
9493 & self ,
@@ -97,16 +96,16 @@ impl Cip0134UriSet {
9796 let mut result = HashSet :: new ( ) ;
9897
9998 if let Some ( uris) = self . x_uris ( ) . get ( & role) {
100- result. extend ( uris. iter ( ) . filter ( |v| ! self . 0 . taken . contains ( v ) ) . cloned ( ) ) ;
99+ result. extend ( uris. iter ( ) . cloned ( ) ) ;
101100 }
102101 if let Some ( uris) = self . c_uris ( ) . get ( & role) {
103- result. extend ( uris. iter ( ) . filter ( |v| ! self . 0 . taken . contains ( v ) ) . cloned ( ) ) ;
102+ result. extend ( uris. iter ( ) . cloned ( ) ) ;
104103 }
105104
106105 result
107106 }
108107
109- /// Returns a set of active (without taken) stake addresses by the given role.
108+ /// Returns a set of stake addresses by the given role.
110109 #[ must_use]
111110 pub ( crate ) fn role_stake_addresses (
112111 & self ,
@@ -123,12 +122,6 @@ impl Cip0134UriSet {
123122 . collect ( )
124123 }
125124
126- /// Returns a set of all active (without taken) addresses.
127- #[ must_use]
128- pub fn addresses ( & self ) -> HashSet < Address > {
129- self . values ( ) . map ( Cip0134Uri :: address) . cloned ( ) . collect ( )
130- }
131-
132125 /// Returns a set of all active (without taken) stake addresses.
133126 #[ must_use]
134127 pub fn stake_addresses ( & self ) -> HashSet < StakeAddress > {
@@ -173,7 +166,7 @@ impl Cip0134UriSet {
173166 let Cip0134UriSetInner {
174167 mut x_uris,
175168 mut c_uris,
176- taken : mut taken_uris ,
169+ mut taken_stake_addresses ,
177170 } = Arc :: unwrap_or_clone ( self . 0 ) ;
178171
179172 for ( index, cert) in metadata. x509_certs . iter ( ) . enumerate ( ) {
@@ -186,9 +179,6 @@ impl Cip0134UriSet {
186179 } ,
187180 X509DerCert :: X509Cert ( _) => {
188181 if let Some ( uris) = metadata. certificate_uris . x_uris ( ) . get ( & index) {
189- uris. iter ( ) . for_each ( |v| {
190- taken_uris. remove ( v) ;
191- } ) ;
192182 x_uris. insert ( index, uris. clone ( ) ) ;
193183 }
194184 } ,
@@ -208,19 +198,24 @@ impl Cip0134UriSet {
208198 } ,
209199 C509Cert :: C509Certificate ( _) => {
210200 if let Some ( uris) = metadata. certificate_uris . c_uris ( ) . get ( & index) {
211- uris. iter ( ) . for_each ( |v| {
212- taken_uris. remove ( v) ;
213- } ) ;
214201 c_uris. insert ( index, uris. clone ( ) ) ;
215202 }
216203 } ,
217204 }
218205 }
219206
207+ metadata
208+ . certificate_uris
209+ . stake_addresses ( )
210+ . iter ( )
211+ . for_each ( |v| {
212+ taken_stake_addresses. remove ( v) ;
213+ } ) ;
214+
220215 Self ( Arc :: new ( Cip0134UriSetInner {
221216 x_uris,
222217 c_uris,
223- taken : taken_uris ,
218+ taken_stake_addresses ,
224219 } ) )
225220 }
226221
@@ -233,27 +228,25 @@ impl Cip0134UriSet {
233228 self ,
234229 reg : & Cip509RbacMetadata ,
235230 ) -> Self {
236- let current_uris_set = self . values ( ) . collect :: < HashSet < _ > > ( ) ;
237-
238- let latest_taken_uris = reg
231+ let current_stake_addresses = self . stake_addresses ( ) ;
232+ let latest_taken_stake_addresses = reg
239233 . certificate_uris
240- . values ( )
241- . filter ( |v| current_uris_set. contains ( v) )
242- . cloned ( )
243- . collect :: < Vec < _ > > ( ) ;
234+ . stake_addresses ( )
235+ . into_iter ( )
236+ . filter ( |v| current_stake_addresses. contains ( & v) ) ;
244237
245238 let Cip0134UriSetInner {
246239 x_uris,
247240 c_uris,
248- taken : mut taken_uris ,
241+ mut taken_stake_addresses ,
249242 } = Arc :: unwrap_or_clone ( self . 0 ) ;
250243
251- taken_uris . extend ( latest_taken_uris ) ;
244+ taken_stake_addresses . extend ( latest_taken_stake_addresses ) ;
252245
253246 Self ( Arc :: new ( Cip0134UriSetInner {
254247 x_uris,
255248 c_uris,
256- taken : taken_uris ,
249+ taken_stake_addresses ,
257250 } ) )
258251 }
259252}
0 commit comments