Class: Dogfood::Scheduler

Inherits:
Object
  • Object
show all
Defined in:
lib/dogfood/scheduler.rb

Constant Summary collapse

DEFAULT_DELAYS =

No domain-specific defaults. Packs define their own delay distributions via p.delays event: { bucket: weight, ... }.

{}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(rng, delays: {}) ⇒ Scheduler

Returns a new instance of Scheduler.



9
10
11
12
# File 'lib/dogfood/scheduler.rb', line 9

def initialize(rng, delays: {})
  @rng = rng
  @delays = DEFAULT_DELAYS.merge(delays)
end

Instance Method Details

#schedule(event) ⇒ Object



14
15
16
17
18
# File 'lib/dogfood/scheduler.rb', line 14

def schedule(event)
  distribution = @delays.fetch(event) { raise ArgumentError, "Unknown event: #{event}" }
  delay_days = resolve_delay(distribution)
  { delay_days: delay_days, event: event }
end