Class: DeepConnect::Future

Inherits:
Delegator
  • Object
show all
Defined in:
lib/deep-connect/future.rb

Constant Summary collapse

NULLVALUE =
:__DEEPCONNECT_FUTURE_NULLVALUE__

Class Method Summary collapse

Instance Method Summary collapse

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

#inspectObject



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

#valueObject 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

Returns:

  • (Boolean)


53
54
55
# File 'lib/deep-connect/future.rb', line 53

def value?
  @value != NULLVALUE
end