Sha256: 52ccb7a0ac7598c2a8e265eb1f5a9b7e2bfd1d405c545a309abcc1da22066c8d

Contents?: true

Size: 872 Bytes

Versions: 2

Compression:

Stored size: 872 Bytes

Contents

# monkeypatches for Timers & Timer classes used by Celluloid
class Timers
  def initialize
    @timers = SortedSet.new
    @paused_timers = SortedSet.new
  end

  def pause(timer = nil)
    return pause_all if timer.nil?
    raise TypeError, "not a Timers::Timer" unless timer.is_a? Timers::Timer
    @timers.delete timer
    @paused_timers.add timer
  end

  def pause_all
    @timers.each {|timer| timer.pause}
  end

  def continue(timer = nil)
    return continue_all if timer.nil?
    raise TypeError, "not a Timers::Timer" unless timer.is_a? Timers::Timer
    @paused_timers.delete timer
    @timers.add timer
  end

  def continue_all
    @paused_timers.each {|timer| timer.continue}
  end

  class Timer
    # Pause this timer
    def pause
      @timers.pause self
    end

    # Continue this timer
    def continue
      @timers.continue self
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
artoo-0.4.0 lib/artoo/ext/timers.rb
artoo-0.3.0 lib/artoo/ext/timers.rb