@@ -20,9 +20,9 @@ impl Display for LimiterError {
20
20
}
21
21
impl Error for LimiterError { }
22
22
23
- async fn has_limiter ( state : & State , consumer_key : & String ) -> bool {
23
+ async fn has_limiter ( state : & State , consumer : & Consumer ) -> bool {
24
24
let rate_limiter_map = state. limiter . read ( ) . await ;
25
- rate_limiter_map. get ( consumer_key ) . is_some ( )
25
+ rate_limiter_map. get ( & consumer . key ) . is_some ( )
26
26
}
27
27
28
28
async fn add_limiter ( state : & State , consumer : & Consumer , tier : & Tier ) {
@@ -47,23 +47,23 @@ async fn add_limiter(state: &State, consumer: &Consumer, tier: &Tier) {
47
47
. insert ( consumer. key . clone ( ) , rates) ;
48
48
}
49
49
50
- pub async fn limiter ( state : Arc < State > , consumer_key : String ) -> Result < ( ) , LimiterError > {
51
- if !has_limiter ( & state, & consumer_key ) . await {
50
+ pub async fn limiter ( state : Arc < State > , consumer : & Consumer ) -> Result < ( ) , LimiterError > {
51
+ if !has_limiter ( & state, consumer ) . await {
52
52
let consumers = state. consumers . read ( ) . await . clone ( ) ;
53
- let consumer = match consumers. get ( & consumer_key ) {
53
+ let refreshed_consumer = match consumers. get ( & consumer . hash_key ) {
54
54
Some ( consumer) => consumer,
55
55
None => return Err ( LimiterError :: PortDeleted ) ,
56
56
} ;
57
57
let tiers = state. tiers . read ( ) . await . clone ( ) ;
58
- let tier = match tiers. get ( & consumer . tier ) {
58
+ let tier = match tiers. get ( & refreshed_consumer . tier ) {
59
59
Some ( tier) => tier,
60
60
None => return Err ( LimiterError :: InvalidTier ) ,
61
61
} ;
62
- add_limiter ( & state, consumer , tier) . await ;
62
+ add_limiter ( & state, refreshed_consumer , tier) . await ;
63
63
}
64
64
65
65
let rate_limiter_map = state. limiter . read ( ) . await . clone ( ) ;
66
- let rates = rate_limiter_map. get ( & consumer_key ) . unwrap ( ) ;
66
+ let rates = rate_limiter_map. get ( & consumer . key ) . unwrap ( ) ;
67
67
68
68
join_all ( rates. iter ( ) . map ( |r| async { r. acquire_one ( ) . await } ) ) . await ;
69
69
Ok ( ( ) )
0 commit comments