Sha256: 1688daee3c8111977a064f5384d1a1c443985d340cdeee82d81ecc75ac13c16b

Contents?: true

Size: 904 Bytes

Versions: 2

Compression:

Stored size: 904 Bytes

Contents

# frozen_string_literal: true

# @api private
# @since 1.0.0
module RedisQueuedLocks::Acquier::AcquireLock::WithAcqTimeout
  # @param timeout [NilClass,Integer]
  #   Time period after which the logic will fail with timeout error.
  # @param lock_key [String]
  #   Lock name.
  # @param raise_errors [Boolean]
  #   Raise erros on exceptional cases.
  # @option on_timeout [Proc,NilClass]
  #   Callback invoked on Timeout::Error.
  # @return [Any]
  #
  # @api private
  # @since 1.0.0
  def with_acq_timeout(timeout, lock_key, raise_errors, on_timeout: nil, &block)
    ::Timeout.timeout(timeout, &block)
  rescue ::Timeout::Error
    on_timeout.call unless on_timeout == nil

    if raise_errors
      raise(
        RedisQueuedLocks::LockAcquiermentTimeoutError,
        "Failed to acquire the lock \"#{lock_key}\" " \
        "for the given timeout (#{timeout} seconds)."
      )
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
redis_queued_locks-1.7.0 lib/redis_queued_locks/acquier/acquire_lock/with_acq_timeout.rb
redis_queued_locks-1.2.0 lib/redis_queued_locks/acquier/acquire_lock/with_acq_timeout.rb