Class: Timers::Group

### Home Classes Methods

### In Files

- lib/timers/group.rb

### Parent

Object

### Methods

- ::new
- #after
- #cancel
- #continue
- #current_offset
- #delay
- #every
- #fire
- #pause
- #resume
- #wait
- #wait_interval

### Included Modules

- Enumerable

### Class/Module Index

Quicksearch

- Timers
- Timers::Events
- Timers::Events::Handle
- Timers::Group
- Timers::Timer
- Timers::Wait

No matching classes.

# Timers::Group

### Attributes

events[R]

Scheduled events:

paused_timers[R]

Paused timers:

timers[R]

Active timers:

### Public Class Methods

new() click to toggle source

    # File lib/timers/group.rb, line 16
    def initialize
      @events = Events.new

      @timers = Set.new
      @paused_timers = Set.new

      @interval = Hitimes::Interval.new
      @interval.start
    end

### Public Instance Methods

after(interval, &block) click to toggle source

Call the given block after the given interval. The first argument will be the time at which the group was asked to fire timers for.

    # File lib/timers/group.rb, line 37
    def after(interval, &block)
      Timer.new(self, interval, false, &block)
    end

cancel() click to toggle source

Cancel all timers.

    # File lib/timers/group.rb, line 107
    def cancel
      @timers.dup.each do |timer|
        timer.cancel
      end
    end

continue() click to toggle source
Alias for: resume
current_offset() click to toggle source

The group's current time.

    # File lib/timers/group.rb, line 114
    def current_offset
      @interval.to_f
    end

delay(seconds) click to toggle source

Delay all timers.

    # File lib/timers/group.rb, line 100
    def delay(seconds)
      @timers.each do |timer|
        timer.delay(seconds)
      end
    end

every(interval, recur = true, &block) click to toggle source

Call the given block periodically at the given interval. The first argument will be the time at which the group was asked to fire timers for.

    # File lib/timers/group.rb, line 43
    def every(interval, recur = true, &block)
      Timer.new(self, interval, recur, &block)
    end

fire(offset = self.current_offset) click to toggle source

Fire all timers that are ready.

    # File lib/timers/group.rb, line 79
    def fire(offset = self.current_offset)
      @events.fire(offset)
    end

pause() click to toggle source

Pause all timers.

    # File lib/timers/group.rb, line 84
    def pause
      @timers.dup.each do |timer|
        timer.pause
      end
    end

resume() click to toggle source

Resume all timers.

    # File lib/timers/group.rb, line 91
    def resume
      @paused_timers.dup.each do |timer|
        timer.resume
      end
    end

Also aliased as: continue
wait(&block) click to toggle source

Wait for the next timer and fire it. Can take a block, which should behave like sleep(n), except that n may be nil (sleep forever) or a negative number (fire immediately after return).

    # File lib/timers/group.rb, line 50
    def wait(&block)
      if block_given?
        yield wait_interval

        while interval = wait_interval and interval > 0
          yield interval
        end
      else
        while interval = wait_interval and interval > 0
          # We cannot assume that sleep will wait for the specified time, it might be +/- a bit.
          sleep interval
        end
      end

      fire
    end

wait_interval(offset = self.current_offset) click to toggle source

Interval to wait until when the next timer will fire.

- nil: no timers

- -ve: timers expired already

- 0: timers ready to fire

- +ve: timers waiting to fire

    # File lib/timers/group.rb, line 72
    def wait_interval(offset = self.current_offset)
      if handle = @events.first
        return handle.time - Float(offset)
      end
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.