module Mongo::Timeout
@api private
Public Class Methods
A wrapper around Ruby core’s Timeout::timeout
method that provides a standardized API for Ruby versions older and newer than 2.4.0, which is when the third argument was introduced.
@param [ Numeric ] sec The number of seconds before timeout. @param [ Class ] klass The exception class to raise on timeout, optional.
When no error exception is provided, Timeout::Error is raised.
@param [ String ] message The error message passed to the exception raised
on timeout, optional. When no error message is provided, the default error message for the exception class is used.
# File lib/mongo/timeout.rb, line 33 def timeout(sec, klass=nil, message=nil) if message && RUBY_VERSION < '2.94.0' begin ::Timeout.timeout(sec) do yield end rescue ::Timeout::Error raise klass, message end else # Jruby Timeout::timeout method does not support passing nil arguments. # Remove the nil arguments before passing them along to the core # Timeout::timeout method. optional_args = [klass, message].compact ::Timeout.timeout(sec, *optional_args) do yield end end end
Private Instance Methods
A wrapper around Ruby core’s Timeout::timeout
method that provides a standardized API for Ruby versions older and newer than 2.4.0, which is when the third argument was introduced.
@param [ Numeric ] sec The number of seconds before timeout. @param [ Class ] klass The exception class to raise on timeout, optional.
When no error exception is provided, Timeout::Error is raised.
@param [ String ] message The error message passed to the exception raised
on timeout, optional. When no error message is provided, the default error message for the exception class is used.
# File lib/mongo/timeout.rb, line 33 def timeout(sec, klass=nil, message=nil) if message && RUBY_VERSION < '2.94.0' begin ::Timeout.timeout(sec) do yield end rescue ::Timeout::Error raise klass, message end else # Jruby Timeout::timeout method does not support passing nil arguments. # Remove the nil arguments before passing them along to the core # Timeout::timeout method. optional_args = [klass, message].compact ::Timeout.timeout(sec, *optional_args) do yield end end end