Class: Iodine::TimedEvent
- Inherits:
-
Object
- Object
- Iodine::TimedEvent
- Defined in:
- lib/iodine/timers.rb
Overview
Every timed event is a member of the TimedEvent class and responds to it’s methods.
Instance Attribute Summary collapse
-
#interval ⇒ Object
Sets/gets how often a timed event repeats, in seconds.
-
#job ⇒ Object
Allows you to acess or change the timer’s Proc object.
-
#repeat_limit ⇒ Object
Sets/gets how many times a timed event repeats.
Instance Method Summary collapse
-
#done? ⇒ true, false
Returns true if the timer is finished.
-
#initialize(reactor, interval, repeat_limit = -1,, args = [], job = nil) ⇒ TimedEvent
constructor
Initialize a timed event.
-
#stop! ⇒ Iodine::TimedEvent
stops a timed event.
Constructor Details
#initialize(reactor, interval, repeat_limit = -1,, args = [], job = nil) ⇒ TimedEvent
Initialize a timed event.
19 20 21 22 23 24 25 26 |
# File 'lib/iodine/timers.rb', line 19 def initialize reactor, interval, repeat_limit = -1, args=[], job=nil @interval = interval @repeat_limit = repeat_limit ? repeat_limit.to_i : -1 @job = job || (Proc.new { stop! }) @next = Iodine.time + interval args << self @args = args end |
Instance Attribute Details
#interval ⇒ Object
Sets/gets how often a timed event repeats, in seconds.
11 12 13 |
# File 'lib/iodine/timers.rb', line 11 def interval @interval end |
#job ⇒ Object
Allows you to acess or change the timer’s Proc object.
16 17 18 |
# File 'lib/iodine/timers.rb', line 16 def job @job end |
#repeat_limit ⇒ Object
Sets/gets how many times a timed event repeats. If set to false or -1, the timed event will repead until the application quits.
14 15 16 |
# File 'lib/iodine/timers.rb', line 14 def repeat_limit @repeat_limit end |
Instance Method Details
#done? ⇒ true, false
Returns true if the timer is finished.
If the timed event is due, this method will also add the event to the queue.
39 40 41 42 43 44 45 46 |
# File 'lib/iodine/timers.rb', line 39 def done? return false unless @next <= Iodine.time return true if @repeat_limit == 0 @repeat_limit -= 1 if @repeat_limit.to_i > 0 Iodine.run *@args, &@job @next = Iodine.time + @interval @repeat_limit == 0 end |
#stop! ⇒ Iodine::TimedEvent
stops a timed event.
30 31 32 33 |
# File 'lib/iodine/timers.rb', line 30 def stop! @repeat_limit = 0 self end |