Class: UV::Repeat
- Inherits:
-
ScheduledEvent
- Object
- Libuv::Q::DeferredPromise
- ScheduledEvent
- UV::Repeat
- Defined in:
- lib/uv-rays/scheduler.rb
Instance Attribute Summary
Attributes inherited from ScheduledEvent
#created, #last_scheduled, #next_scheduled, #trigger_count
Instance Method Summary collapse
-
#initialize(scheduler, every) ⇒ Repeat
constructor
A new instance of Repeat.
-
#pause ⇒ Object
removes the event from the schedule.
-
#resume ⇒ Object
reschedules the event to the next time period can be used to reset a repeating timer.
-
#trigger ⇒ Object
Runs the event and reschedules.
-
#update(every) ⇒ Object
Update the time period of the repeating event.
Methods inherited from ScheduledEvent
Constructor Details
#initialize(scheduler, every) ⇒ Repeat
Returns a new instance of Repeat.
89 90 91 92 93 94 |
# File 'lib/uv-rays/scheduler.rb', line 89 def initialize(scheduler, every) super(scheduler) @every = every next_time end |
Instance Method Details
#pause ⇒ Object
removes the event from the schedule
108 109 110 111 |
# File 'lib/uv-rays/scheduler.rb', line 108 def pause @paused = true @scheduler.unschedule(self) end |
#resume ⇒ Object
reschedules the event to the next time period can be used to reset a repeating timer
115 116 117 118 119 |
# File 'lib/uv-rays/scheduler.rb', line 115 def resume @paused = false @last_scheduled = @loop.now reschedule end |
#trigger ⇒ Object
Runs the event and reschedules
122 123 124 125 126 127 128 129 |
# File 'lib/uv-rays/scheduler.rb', line 122 def trigger super() @loop.next_tick do # Do this next tick to avoid needless scheduling # if the event is stopped in the callback reschedule end end |
#update(every) ⇒ Object
Update the time period of the repeating event
99 100 101 102 103 104 105 |
# File 'lib/uv-rays/scheduler.rb', line 99 def update(every) time = Scheduler.parse_in(every, :quiet) || Scheduler.parse_cron(every, :quiet) raise ArgumentError.new("couldn't parse \"#{o}\"") if time.nil? @every = time reschedule end |