Sha256: 0da56f2c74f2362a88352c6dd88467dfadb32fbbd01bfe479e3572d02c8c5cd3

Contents?: true

Size: 616 Bytes

Versions: 2

Compression:

Stored size: 616 Bytes

Contents

module ResumableJob
  class Backoff
    DEFAULT_BASE_IN_MINUTES = 1
    SECONDS_PER_MINUTE = 60

    class << self
      def to_i(*args)
        new(*args).to_i
      end

      def to_time(*args)
        new(*args).to_time
      end
    end

    def to_i
      to_time.to_i
    end

    def initialize(attempt, base: DEFAULT_BASE_IN_MINUTES)
      self.attempt = attempt
      self.base = base
    end

    def to_time
      Time.now + delay
    end

    private

    attr_accessor :attempt, :base

    def delay
      (2**attempt) * base * SECONDS_PER_MINUTE
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
resumable_job-0.1.2 lib/resumable_job/backoff.rb
resumable_job-0.1.1 lib/resumable_job/backoff.rb