diff options
Diffstat (limited to 'core/lib/reserver.rb')
-rw-r--r-- | core/lib/reserver.rb | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/core/lib/reserver.rb b/core/lib/reserver.rb index a802ea84..a1a9c7a0 100644 --- a/core/lib/reserver.rb +++ b/core/lib/reserver.rb @@ -10,12 +10,13 @@ require 'delegate' class Reserver < Delegator - attr_reader :time + attr_reader :time, :thread_class alias __getobj__ time - def initialize(time, &proc) + def initialize(time, thread: Thread, &proc) raise ArgumentError.new('Block necessary for Reserver.new') unless block_given? @proc = proc + @thread_class = thread case when time.is_a?(Time) @time = time.freeze @@ -62,7 +63,7 @@ class Reserver < Delegator sleep_time = reserver.time - Time.now if sleep_time <= 0 @reservers.delete reserver - Thread.new(&reserver) + reserver.thread_class.new(&reserver) else Timeout.timeout(1 + sleep_time / 2, WakeUp){ Thread.stop } end rescue WakeUp |