class PromisePool::Timer
Constants
- Error
Attributes
block[RW]
error[RW]
timeout[RW]
timer[RW]
Public Class Methods
new(timeout, error=Error.new('execution expired'))
click to toggle source
# File lib/promise_pool/timer.rb, line 36 def initialize timeout, error=Error.new('execution expired') self.timeout = timeout self.error = error end
Public Instance Methods
cancel()
click to toggle source
should never raise!
# File lib/promise_pool/timer.rb, line 47 def cancel timer.cancel if timer self.block = nil end
group()
click to toggle source
# File lib/promise_pool/timer.rb, line 15 def group @group ||= @mutex.synchronize{ @group ||= group_new } end
group_new()
click to toggle source
# File lib/promise_pool/timer.rb, line 20 def group_new g = Timers::Group.new g.every(interval){} @thread = Thread.new do begin g.wait rescue => e warn "#{self.class}: ERROR: #{e}\n from #{e.backtrace.inspect}" end while g.count > 1 @group = nil end g end
on_timeout(&block)
click to toggle source
# File lib/promise_pool/timer.rb, line 41 def on_timeout &block self.block = block start end
start()
click to toggle source
# File lib/promise_pool/timer.rb, line 52 def start return if timeout.nil? || timeout.zero? self.timer = self.class.group.after(timeout){ block.call if block } end