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