Class: DeepConnect::Future
- Defined in:
- lib/deep-connect/future.rb
Constant Summary collapse
- NULLVALUE =
:__DEEPCONNECT_FUTURE_NULLVALUE__
Class Method Summary collapse
Instance Method Summary collapse
- #__setobj__(dummy) ⇒ Object
-
#initialize(&block) ⇒ Future
constructor
A new instance of Future.
- #inspect ⇒ Object
- #value ⇒ Object (also: #__getobj__)
- #value? ⇒ Boolean
Constructor Details
#initialize(&block) ⇒ Future
Returns a new instance of Future.
31 32 33 34 35 36 37 38 39 |
# File 'lib/deep-connect/future.rb', line 31 def initialize(&block) super(@value = NULLVALUE) @value_mutex = Mutex.new @value_cv = ConditionVariable.new Thread.start do @value = yield @value_cv.broadcast end end |
Class Method Details
.future(&block) ⇒ Object
27 28 29 |
# File 'lib/deep-connect/future.rb', line 27 def self.future(&block) Futre.new(&block) end |
Instance Method Details
#__setobj__(dummy) ⇒ Object
41 |
# File 'lib/deep-connect/future.rb', line 41 def __setobj__(dummy); end |
#inspect ⇒ Object
57 58 59 60 61 62 63 |
# File 'lib/deep-connect/future.rb', line 57 def inspect if @value == NULLVALUE "#<DeepConnect::Future: (NOT ARRIVED)>" else "#<DeepConnect::Future: #{@value.inspect}>" end end |
#value ⇒ Object Also known as: __getobj__
43 44 45 46 47 48 49 50 |
# File 'lib/deep-connect/future.rb', line 43 def value @value_mutex.synchronize do while @value == NULLVALUE @value_cv.wait(@value_mutex) end end @value end |
#value? ⇒ Boolean
53 54 55 |
# File 'lib/deep-connect/future.rb', line 53 def value? @value != NULLVALUE end |