class ServerEngine::BlockingFlag

Public Class Methods

new() click to toggle source
# File lib/serverengine/blocking_flag.rb, line 22
def initialize
  @set = false
  @mutex = Mutex.new
  @cond = ConditionVariable.new
end

Public Instance Methods

reset!() click to toggle source
# File lib/serverengine/blocking_flag.rb, line 40
def reset!
  toggled = false
  @mutex.synchronize do
    if @set
      @set = false
      toggled = true
    end
    @cond.broadcast
  end
  return toggled
end
set!() click to toggle source
# File lib/serverengine/blocking_flag.rb, line 28
def set!
  toggled = false
  @mutex.synchronize do
    unless @set
      @set = true
      toggled = true
    end
    @cond.broadcast
  end
  return toggled
end
set?() click to toggle source
# File lib/serverengine/blocking_flag.rb, line 52
def set?
  @set
end
wait(timeout=nil)
Alias for: wait_for_set
wait_for_reset(timeout=nil) click to toggle source
# File lib/serverengine/blocking_flag.rb, line 67
def wait_for_reset(timeout=nil)
  @mutex.synchronize do
    if @set
      @cond.wait(@mutex, timeout)
    end
    return !@set
  end
end
wait_for_set(timeout=nil) click to toggle source
# File lib/serverengine/blocking_flag.rb, line 56
def wait_for_set(timeout=nil)
  @mutex.synchronize do
    unless @set
      @cond.wait(@mutex, timeout)
    end
    return @set
  end
end
Also aliased as: wait