Class: FutureResource
- Inherits:
-
Object
show all
- Defined in:
- lib/future-resource.rb,
lib/future-resource/version.rb
Defined Under Namespace
Classes: ResourceAlreadySetException
Constant Summary
collapse
- VERSION =
"0.0.2"
Instance Method Summary
collapse
Constructor Details
Returns a new instance of FutureResource.
6
7
8
9
|
# File 'lib/future-resource.rb', line 6
def initialize
@resource_lock = Monitor.new
@resource_value_blocker = @resource_lock.new_cond
end
|
Instance Method Details
#resource(timeout = nil) ⇒ Object
15
16
17
18
19
20
21
22
|
# File 'lib/future-resource.rb', line 15
def resource(timeout = nil)
Timeout::timeout timeout do
@resource_lock.synchronize do
@resource_value_blocker.wait unless defined? @resource
@resource
end
end
end
|
#resource=(resource) ⇒ Object
24
25
26
27
28
29
30
31
|
# File 'lib/future-resource.rb', line 24
def resource=(resource)
@resource_lock.synchronize do
raise ResourceAlreadySetException if defined? @resource
@resource = resource
@resource_value_blocker.broadcast
@resource_value_blocker = nil
end
end
|
#set_yet? ⇒ Boolean
11
12
13
|
# File 'lib/future-resource.rb', line 11
def set_yet?
!!@resource_lock.synchronize { defined? @resource }
end
|