Class: SolidObjects::PollingBackoff
- Inherits:
-
Object
- Object
- SolidObjects::PollingBackoff
- Defined in:
- lib/solid_objects/polling_backoff.rb,
sig/generated/lib/solid_objects/polling_backoff.rbs
Instance Attribute Summary collapse
- #current_interval ⇒ Object readonly
Instance Method Summary collapse
- #change(interval, reason) ⇒ void
-
#initialize(minimum_interval:, maximum_interval:, on_change: nil) ⇒ PollingBackoff
constructor
A new instance of PollingBackoff.
- #record_idle ⇒ void
- #reset(reason) ⇒ void
Constructor Details
#initialize(minimum_interval:, maximum_interval:, on_change: nil) ⇒ PollingBackoff
Returns a new instance of PollingBackoff.
13 14 15 16 17 18 |
# File 'lib/solid_objects/polling_backoff.rb', line 13 def initialize(minimum_interval:, maximum_interval:, on_change: nil) @minimum_interval = minimum_interval.to_f @maximum_interval = [ @minimum_interval, maximum_interval.to_f ].max @current_interval = @minimum_interval @on_change = on_change end |
Instance Attribute Details
#current_interval ⇒ Object (readonly)
10 11 12 |
# File 'lib/solid_objects/polling_backoff.rb', line 10 def current_interval @current_interval end |
Instance Method Details
#change(interval, reason) ⇒ void
This method returns an undefined value.
33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/solid_objects/polling_backoff.rb', line 33 def change(interval, reason) return if interval == current_interval previous_interval = current_interval @current_interval = interval @on_change&.call( previous_interval:, current_interval: interval, reason: ) end |
#record_idle ⇒ void
This method returns an undefined value.
21 22 23 |
# File 'lib/solid_objects/polling_backoff.rb', line 21 def record_idle change([ current_interval * 2, @maximum_interval ].min, :idle) end |
#reset(reason) ⇒ void
This method returns an undefined value.
26 27 28 |
# File 'lib/solid_objects/polling_backoff.rb', line 26 def reset(reason) change(@minimum_interval, reason) end |