Class: OMQ::Rust::Java::Promise

Inherits:
Object
  • Object
show all
Defined in:
lib/omq/rust/java/engine.rb

Instance Method Summary collapse

Constructor Details

#initialize(&resolver) ⇒ Promise

Returns a new instance of Promise.



38
39
40
41
42
43
44
# File 'lib/omq/rust/java/engine.rb', line 38

def initialize(&resolver)
  @mutex    = Mutex.new
  @cv       = ConditionVariable.new
  @resolved = false
  @value    = nil
  @resolver = resolver
end

Instance Method Details

#resolve(value = nil) ⇒ Object



52
53
54
55
56
57
58
59
60
# File 'lib/omq/rust/java/engine.rb', line 52

def resolve(value = nil)
  @mutex.synchronize do
    return @value if @resolved

    @resolved = true
    @value    = value
    @cv.broadcast
  end
end

#resolved?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/omq/rust/java/engine.rb', line 47

def resolved?
  @mutex.synchronize { @resolved }
end

#waitObject



63
64
65
66
67
68
69
70
71
72
73
# File 'lib/omq/rust/java/engine.rb', line 63

def wait
  until resolved?
    if @resolver
      @resolver.call(self)
    else
      @mutex.synchronize { @cv.wait(@mutex, 0.05) unless @resolved }
    end
  end

  @value
end