Class: OMQ::Rust::Java::Promise
- Inherits:
-
Object
- Object
- OMQ::Rust::Java::Promise
- Defined in:
- lib/omq/rust/java/engine.rb
Instance Method Summary collapse
-
#initialize(&resolver) ⇒ Promise
constructor
A new instance of Promise.
- #resolve(value = nil) ⇒ Object
- #resolved? ⇒ Boolean
- #wait ⇒ Object
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
47 48 49 |
# File 'lib/omq/rust/java/engine.rb', line 47 def resolved? @mutex.synchronize { @resolved } end |
#wait ⇒ Object
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 |