class Backport::Server::Interval

A Backport periodical interval server.

Public Class Methods

new(period, &block) click to toggle source

@param period [Float] The interval time in seconds. @param block [Proc] The proc to run on each interval. @yieldparam [Interval]

# File lib/backport/server/interval.rb, line 9
def initialize period, &block
  @period = period
  @block = block
  @ready = false
  @mutex = Mutex.new
end

Public Instance Methods

starting() click to toggle source
# File lib/backport/server/interval.rb, line 16
def starting
  @ready = false
  run_ready_thread
end
tick() click to toggle source
# File lib/backport/server/interval.rb, line 21
def tick
  return unless @ready
  @mutex.synchronize do
    @block.call self
    @ready = false
  end
end

Private Instance Methods

run_ready_thread() click to toggle source

@return [void]

# File lib/backport/server/interval.rb, line 32
def run_ready_thread
  Thread.new do
    until stopped?
      sleep @period
      break if stopped?
      @mutex.synchronize { @ready = true }
      changed
      notify_observers self
    end
  end
end