Class: WhatsAppNotifier::Bulk::RateLimiter
- Inherits:
-
Object
- Object
- WhatsAppNotifier::Bulk::RateLimiter
- Defined in:
- lib/whatsapp_notifier/bulk/rate_limiter.rb
Instance Method Summary collapse
-
#initialize(base_delay:, jitter:, sleeper:, rng: Random.new) ⇒ RateLimiter
constructor
A new instance of RateLimiter.
- #wait_before_next ⇒ Object
Constructor Details
#initialize(base_delay:, jitter:, sleeper:, rng: Random.new) ⇒ RateLimiter
Returns a new instance of RateLimiter.
4 5 6 7 8 9 |
# File 'lib/whatsapp_notifier/bulk/rate_limiter.rb', line 4 def initialize(base_delay:, jitter:, sleeper:, rng: Random.new) @base_delay = base_delay.to_f @jitter = jitter.to_f @sleeper = sleeper @rng = rng end |
Instance Method Details
#wait_before_next ⇒ Object
11 12 13 14 |
# File 'lib/whatsapp_notifier/bulk/rate_limiter.rb', line 11 def wait_before_next delay = @base_delay + (@rng.rand * @jitter) @sleeper.call(delay) if delay.positive? end |