lib/future-resource.rb in future-resource-0.0.1 vs lib/future-resource.rb in future-resource-0.0.2
- old
+ new
@@ -1,7 +1,8 @@
require "thread"
require "monitor"
+require "timeout"
class FutureResource
def initialize
@resource_lock = Monitor.new
@resource_value_blocker = @resource_lock.new_cond
@@ -9,13 +10,15 @@
def set_yet?
!!@resource_lock.synchronize { defined? @resource }
end
- def resource
- @resource_lock.synchronize do
- @resource_value_blocker.wait unless defined? @resource
- @resource
+ def resource(timeout = nil)
+ Timeout::timeout timeout do
+ @resource_lock.synchronize do
+ @resource_value_blocker.wait unless defined? @resource
+ @resource
+ end
end
end
def resource=(resource)
@resource_lock.synchronize do