Class: SidekiqUniqueJobs::TimeoutCalculator

Inherits:
Object
  • Object
show all
Defined in:
lib/sidekiq_unique_jobs/timeout_calculator.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(item) ⇒ TimeoutCalculator

Returns a new instance of TimeoutCalculator.



7
8
9
# File 'lib/sidekiq_unique_jobs/timeout_calculator.rb', line 7

def initialize(item)
  @item = item
end

Class Method Details

.for_item(item) ⇒ Object



3
4
5
# File 'lib/sidekiq_unique_jobs/timeout_calculator.rb', line 3

def self.for_item(item)
  new(item)
end

Instance Method Details

#secondsObject



11
12
13
# File 'lib/sidekiq_unique_jobs/timeout_calculator.rb', line 11

def seconds
  time_until_scheduled + unique_expiration
end

#time_until_scheduledObject



15
16
17
18
19
# File 'lib/sidekiq_unique_jobs/timeout_calculator.rb', line 15

def time_until_scheduled
  scheduled = item[AT_KEY]
  return 0 unless scheduled
  (Time.at(scheduled) - Time.now.utc).to_i
end

#unique_expirationObject



21
22
23
24
25
26
27
# File 'lib/sidekiq_unique_jobs/timeout_calculator.rb', line 21

def unique_expiration
  @unique_expiration ||=
    (
      worker_class_unique_expiration ||
      SidekiqUniqueJobs.config.default_expiration
    ).to_i
end

#worker_classObject



34
35
36
# File 'lib/sidekiq_unique_jobs/timeout_calculator.rb', line 34

def worker_class
  @worker_class ||= SidekiqUniqueJobs.worker_class_constantize(item[CLASS_KEY])
end

#worker_class_unique_expirationObject



29
30
31
32
# File 'lib/sidekiq_unique_jobs/timeout_calculator.rb', line 29

def worker_class_unique_expiration
  return unless worker_class.respond_to?(:get_sidekiq_options)
  worker_class.get_sidekiq_options[UNIQUE_TIMEOUT_KEY]
end