Class: UV::Repeat

Inherits:
ScheduledEvent show all
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

Methods inherited from ScheduledEvent

#<=>, #cancel, #inspect

Constructor Details

#initialize(scheduler, every) ⇒ Repeat

Returns a new instance of Repeat.



93
94
95
96
97
98
# File 'lib/uv-rays/scheduler.rb', line 93

def initialize(scheduler, every)
    super(scheduler)

    @every = every
    next_time
end

Instance Method Details

#pauseObject

removes the event from the schedule



112
113
114
115
# File 'lib/uv-rays/scheduler.rb', line 112

def pause
    @paused = true
    @scheduler.unschedule(self)
end

#resumeObject

reschedules the event to the next time period can be used to reset a repeating timer



119
120
121
122
123
# File 'lib/uv-rays/scheduler.rb', line 119

def resume
    @paused = false
    @last_scheduled = @reactor.now
    reschedule
end

#triggerObject

Runs the event and reschedules



126
127
128
129
130
131
132
133
# File 'lib/uv-rays/scheduler.rb', line 126

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) ⇒ Object

Update the time period of the repeating event

Parameters:

  • schedule (String)

    a standard CRON job line or a human readable string representing a time period.

Raises:

  • (ArgumentError)


103
104
105
106
107
108
109
# File 'lib/uv-rays/scheduler.rb', line 103

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