class Sumac::RemoteEntry

Public Class Methods

new() click to toggle source
# File lib/sumac/remote_entry.rb, line 4
def initialize
  @mutex = Mutex.new
  @condition_variable = ConditionVariable.new
  @value = nil
  @value_set = false
  @complete = false
end

Public Instance Methods

cancel() click to toggle source
# File lib/sumac/remote_entry.rb, line 12
def cancel
  @mutex.synchronize do
    @complete = true
    @value_set = false
    @value = false
  end
end
complete?() click to toggle source
# File lib/sumac/remote_entry.rb, line 37
def complete?
  @complete
end
get() click to toggle source
# File lib/sumac/remote_entry.rb, line 20
def get
  @mutex.synchronize do
    @condition_variable.wait(@mutex) unless complete?
    raise ClosedError unless @value_set
    @value
  end
end
set(new_value = nil) click to toggle source
# File lib/sumac/remote_entry.rb, line 28
def set(new_value = nil)
  @mutex.synchronize do
    @value_set = true
    @complete = true
    @value = new_value
    @condition_variable.broadcast
  end
end