123456789_123456789_123456789_123456789_123456789_

Module: Mongo::Timeout Private

Do not use. This module is for internal use only.
Relationships & Source Files
Defined in: lib/mongo/timeout.rb

Class Method Summary

  • .timeout(sec, klass = nil, message = nil) Internal use only mod_func

    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.

Class Method Details

.timeout(sec, klass = nil, message = nil) (mod_func)

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.

Parameters:

  • sec (Numeric)

    The number of seconds before timeout.

  • klass (Class) (defaults to: nil)

    The exception class to raise on timeout, optional. When no error exception is provided, Timeout::Error is raised.

  • message (String) (defaults to: nil)

    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.

[ GitHub ]

  
# 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