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, timezone: nil) ⇒ Object
Update the time period of the repeating event.
Methods inherited from ScheduledEvent
#<=>, #cancel, #inspect, #to_time
Constructor Details
#initialize(scheduler, every) ⇒ Repeat
Returns a new instance of Repeat.
104 105 106 107 108 109 |
# File 'lib/uv-rays/scheduler.rb', line 104 def initialize(scheduler, every) super(scheduler) @every = every next_time end |
Instance Method Details
#pause ⇒ Object
removes the event from the schedule
123 124 125 126 |
# File 'lib/uv-rays/scheduler.rb', line 123 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
130 131 132 133 134 |
# File 'lib/uv-rays/scheduler.rb', line 130 def resume @paused = false @last_scheduled = @reactor.now reschedule end |
#trigger ⇒ Object
Runs the event and reschedules
137 138 139 140 141 142 143 144 |
# File 'lib/uv-rays/scheduler.rb', line 137 def trigger super() @reactor.next_tick do # Do this next tick to avoid needless scheduling # if the event is stopped in the callback reschedule end end |
#update(every, timezone: nil) ⇒ Object
Update the time period of the repeating event
114 115 116 117 118 119 120 |
# File 'lib/uv-rays/scheduler.rb', line 114 def update(every, timezone: nil) time = Scheduler.parse_in(every, :quiet) || Scheduler.parse_cron(every, :quiet, timezone: timezone) raise ArgumentError.new("couldn't parse \"#{o}\"") if time.nil? @every = time reschedule end |