class Rsrb::Engine::EventManager
Public Class Methods
new()
click to toggle source
# File lib/rsrb/core/engine.rb, line 3 def initialize @scheduler = Rufus::Scheduler.new end
Public Instance Methods
submit(event)
click to toggle source
# File lib/rsrb/core/engine.rb, line 7 def submit(event) submit_delayed event, event.delay end
Private Instance Methods
submit_delayed(event, delay)
click to toggle source
# File lib/rsrb/core/engine.rb, line 13 def submit_delayed(event, delay) @scheduler.in("#{delay}") {|job| start = Time.now if event.running resubmit = true begin event.execute rescue Exception => e log = Logging.logger['exec'] log.error "Error processing event" log.error e job.unschedule resubmit = false end if resubmit elapsed = Time.now - start remaining = event.delay - elapsed remaining = 0 if remaining <= 0 submit_delayed event, remaining.round end else job.unschedule end } end