24
25
// SetRateLimiter sets the rate limiter to delegate to.
26
>
func (d *RequestRateLimiterDelegator) SetRateLimiter(rl RequestRateLimiter) {
request_rate_limiter_delegator.go
27
>
d.delegate.Store(monomorphicRequestRateLimiter{rl})
28
>
}
29
30
// loadDelegate returns the rate limiter that this rate limiter delegates to.
31
>
func (d *RequestRateLimiterDelegator) loadDelegate() RequestRateLimiter {
request_rate_limiter_delegator.go
32
>
return d.delegate.Load().(RequestRateLimiter)
33
>
}
34
35
// The following methods just delegate to the underlying rate limiter.
36
37
>
func (d *RequestRateLimiterDelegator) Allow(now time.Time, request Request) bool {
request_rate_limiter_delegator.go
38
>
return d.loadDelegate().Allow(now, request)
39
>
}
40
41
>
func (d *RequestRateLimiterDelegator) Reserve(now time.Time, request Request) Reservation {
request_rate_limiter_delegator.go
42
>
return d.loadDelegate().Reserve(now, request)
43
>
}
44
45
>
func (d *RequestRateLimiterDelegator) Wait(ctx context.Context, request Request) error {
request_rate_limiter_delegator.go
46
>
return d.loadDelegate().Wait(ctx, request)
47
>
}