diff options
author | Patrick J Cherry <patrick@bytemark.co.uk> | 2012-01-30 12:28:14 +0000 |
---|---|---|
committer | Patrick J Cherry <patrick@bytemark.co.uk> | 2012-01-30 12:28:14 +0000 |
commit | 8ed82944ebd764f1986b3155990b895045b584bc (patch) | |
tree | 6524da2b6bb3895a09625d6d9ec65963a4d5d2ec /lib/mauve/timer.rb | |
parent | 3367b57cd9e9a4656ba926d9fca1c21f8f7a4dd0 (diff) |
Bundled timer in with processor. What could go wrong..?
Diffstat (limited to 'lib/mauve/timer.rb')
-rw-r--r-- | lib/mauve/timer.rb | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/lib/mauve/timer.rb b/lib/mauve/timer.rb deleted file mode 100644 index 5a43b60..0000000 --- a/lib/mauve/timer.rb +++ /dev/null @@ -1,100 +0,0 @@ -# encoding: UTF-8 -require 'mauve/alert' -require 'mauve/notifier' -require 'mauve/mauve_thread' -require 'thread' -require 'log4r' - -module Mauve - - # - # This is the thread that looks for reminders and heartbeat alerts to poll. - # - class Timer < MauveThread - - include Singleton - - def initialize - # - # Set the default polling interval to zero.. - # - self.poll_every = 0 - - super - end - - private - - # This is the trigger for heartbeats and reminders. - # - # It looks up the next event, and sleeps until it is due. If an update - # comes in (via the processor) it is broken out of its sleep, and starts - # again when woken up. - # - def main_loop - # - # Get the next alert. - # - next_alert = Alert.find_next_with_event - - # - # If we didn't find an alert, or the alert we found is due in the future, - # look for the next alert_changed object. - # - if next_alert.nil? or next_alert.due_at > Time.now - next_alert_changed = AlertChanged.find_next_with_event - end - - if next_alert_changed.nil? and next_alert.nil? - next_to_notify = nil - - elsif next_alert.nil? or next_alert_changed.nil? - next_to_notify = (next_alert || next_alert_changed) - - else - next_to_notify = ( next_alert.due_at < next_alert_changed.due_at ? next_alert : next_alert_changed ) - - end - - # - # Nothing to notify? - # - if next_to_notify.nil? - # - # Sleep indefinitely - # - logger.info("Nothing to notify about -- snoozing for a while.") - sleep_loops = 600 - else - # - # La la la nothing to do. - # - logger.info("Next to notify: #{next_to_notify} #{next_to_notify.is_a?(AlertChanged) ? "(reminder)" : "(heartbeat)"} -- snoozing until #{next_to_notify.due_at.iso8601}") - sleep_loops = ((next_to_notify.due_at - Time.now).to_f / 0.1).round.to_i - end - - sleep_loops = 1 if sleep_loops.nil? or sleep_loops < 1 - - # - # Ah-ha! Sleep with a break clause. - # - sleep_loops.times do - # - # Start again if the situation has changed. - # - break if self.should_stop? - - # - # This is a rate-limiting step for alerts. - # - Kernel.sleep 0.1 - end - - return if self.should_stop? or next_to_notify.nil? - - next_to_notify.poll - end - - end - -end |