123456789_123456789_123456789_123456789_123456789_

Module: Mongo::Timeout Private

Relationships & Source Files
Defined in: lib/mongo/timeout.rb

Class Method Summary

Class Method Details

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

A wrapper around Ruby core's Timeout::timeout method that provides a standardized API for calling it.

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 29

def timeout(sec, klass = nil, message = nil, &block)
  # provide a default error class if the message is present; otherwise,
  # the message will be interpreted as the error class, if klass is nil
  klass ||= ::Timeout::Error if message

  # 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, &block)
end