class WEBrick::Utils::TimeoutHandler
Class used to manage timeout handlers across multiple threads.
Timeout handlers should be managed by using the class methods which are synchronized.
id = TimeoutHandler.register(10, Timeout::Error) begin sleep 20 puts 'foo' ensure TimeoutHandler.cancel(id) end
will raise Timeout::Error
id = TimeoutHandler.register(10, Timeout::Error) begin sleep 5 puts 'foo' ensure TimeoutHandler.cancel(id) end
will print 'foo'
Public Class Methods
cancel(id)
click to toggle source
Cancels the timeout handler id
# File lib/webrick/utils.rb, line 141 def TimeoutHandler.cancel(id) instance.cancel(Thread.current, id) end
new()
click to toggle source
Creates a new TimeoutHandler. You should use ::register and ::cancel instead of creating the timeout handler directly.
# File lib/webrick/utils.rb, line 152 def initialize TimeoutMutex.synchronize{ @timeout_info = Hash.new } @queue = Thread::Queue.new @watcher = nil end
register(seconds, exception)
click to toggle source
Registers a new timeout handler
# File lib/webrick/utils.rb, line 134 def TimeoutHandler.register(seconds, exception) at = Process.clock_gettime(Process::CLOCK_MONOTONIC) + seconds instance.register(Thread.current, at, exception) end
terminate()
click to toggle source
# File lib/webrick/utils.rb, line 145 def self.terminate instance.terminate end