Sha256: b10aa513ef6d3cd1f1ae9de559c8ac5985b0dab6b9cef5eac9670531c6c6420e

Contents?: true

Size: 701 Bytes

Versions: 6

Compression:

Stored size: 701 Bytes

Contents

module GoodJob
  class MultiScheduler
    attr_reader :schedulers

    def initialize(schedulers)
      @schedulers = schedulers
    end

    def shutdown(wait: true)
      schedulers.each { |s| s.shutdown(wait: wait) }
    end

    def shutdown?
      schedulers.all?(&:shutdown?)
    end

    def restart(wait: true)
      schedulers.each { |s| s.restart(wait: wait) }
    end

    def create_thread(state = nil)
      results = []
      any_true = schedulers.any? do |scheduler|
        scheduler.create_thread(state).tap { |result| results << result }
      end

      if any_true
        true
      else
        results.any? { |result| result == false } ? false : nil
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
good_job-1.2.4 lib/good_job/multi_scheduler.rb
good_job-1.2.3 lib/good_job/multi_scheduler.rb
good_job-1.2.2 lib/good_job/multi_scheduler.rb
good_job-1.2.1 lib/good_job/multi_scheduler.rb
good_job-1.2.0 lib/good_job/multi_scheduler.rb
good_job-1.1.4 lib/good_job/multi_scheduler.rb