Class: EventLoop::Timer
Constant Summary
collapse
- DEFAULT_INTERVAL =
0.0
- DEFAULT_TOLERANCE =
0.001
Instance Method Summary
collapse
#__maybe_initialize_signal_emitter, #__signal__, #add_signal_handler, included, #remove_signal_handler
Constructor Details
#initialize(options = {}, &handler) ⇒ Timer
Returns a new instance of Timer.
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
|
# File 'lib/puppet/external/event-loop/event-loop.rb', line 263
def initialize (options={}, &handler)
@running = false
@start_time = nil
options = { :interval => options } if options.kind_of? Numeric
if options[:interval]
@interval = options[:interval].to_f
else
@interval = DEFAULT_INTERVAL
end
if options[:tolerance]
@tolerance = options[:tolerance].to_f
elsif DEFAULT_TOLERANCE < @interval
@tolerance = DEFAULT_TOLERANCE
else
@tolerance = 0.0
end
@event_loop = options[:event_loop] || EventLoop.current
if block_given?
add_signal_handler(:alarm, &handler)
start unless options[:start?] == false
else
start if options[:start?]
end
end
|
Instance Method Details
305
306
|
# File 'lib/puppet/external/event-loop/event-loop.rb', line 305
def end_time
@start_time + @interval end
|
#interval=(new_interval) ⇒ Object
299
300
301
302
303
|
# File 'lib/puppet/external/event-loop/event-loop.rb', line 299
def interval= (new_interval)
old_interval = @interval
@interval = new_interval
@event_loop.check_timer(self) if new_interval < old_interval
end
|
#ready? ⇒ Boolean
309
310
|
# File 'lib/puppet/external/event-loop/event-loop.rb', line 309
def ready?
time_left <= @tolerance end
|
312
313
314
|
# File 'lib/puppet/external/event-loop/event-loop.rb', line 312
def restart
@start_time = Time.now
end
|
#running? ⇒ Boolean
297
|
# File 'lib/puppet/external/event-loop/event-loop.rb', line 297
def running? ; @start_time != nil end
|
#sound_alarm ⇒ Object
316
317
318
319
|
# File 'lib/puppet/external/event-loop/event-loop.rb', line 316
def sound_alarm
signal :alarm
restart if running?
end
|
321
322
323
324
|
# File 'lib/puppet/external/event-loop/event-loop.rb', line 321
def start
@start_time = Time.now
@event_loop.monitor_timer(self)
end
|
326
327
328
329
|
# File 'lib/puppet/external/event-loop/event-loop.rb', line 326
def stop
@start_time = nil
@event_loop.ignore_timer(self)
end
|
#stopped? ⇒ Boolean
296
|
# File 'lib/puppet/external/event-loop/event-loop.rb', line 296
def stopped? ; @start_time == nil end
|
#time_left ⇒ Object
307
308
|
# File 'lib/puppet/external/event-loop/event-loop.rb', line 307
def time_left
end_time - Time.now end
|