Sha256: 814f94adbef7b39a551d931982c7f6cc2542fd9fbba9574b5dad57fb4fd17b0f

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

require 'reqless/queue_patterns_helper'

module Reqless
  module JobReservers
    module Strategies
    end
  end
end

module Reqless::JobReservers::Strategies::Filtering
  # @param [Enumerable] queues - a source of queues
  # @param [Array] regexes - a list of regexes to match against.
  # Return an enumerator of the filtered queues in
  # in prioritized order.
  def self.default(
    queues,
    regexes,
    queue_identifier_patterns,
    queue_priority_patterns
  )
    Enumerator.new do |yielder|
      # Map queues to their names
      mapped_queues = queues.reduce({}) do |hash,queue|
        hash[queue.name] = queue
        hash
      end

      # Filter the queue names against the regexes provided.
      matches = Reqless::QueuePatternsHelper.expand_queues(regexes, mapped_queues.keys, queue_identifier_patterns)

      # Prioritize the queues.
      prioritized_names = Reqless::QueuePatternsHelper.prioritize_queues(queue_priority_patterns, matches)

      prioritized_names.each do |name|
        queue = mapped_queues[name]
        if queue
          yielder << queue
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
reqless-0.0.5 lib/reqless/job_reservers/strategies/filtering.rb