Sha256: e36992291fc984567a08941bc78415b6831e40aca42dabcf50a0ea5f5dc9f318
Contents?: true
Size: 1.14 KB
Versions: 2
Compression:
Stored size: 1.14 KB
Contents
module Woodhouse class QueueCriteria attr_reader :criteria attr_accessor :exclusive def initialize(values = {}, flags = nil) flags ||= {} self.exclusive ||= flags[:exclusive] if values.kind_of?(self.class) values = values.criteria end unless values.nil? @criteria = stringify_values(values).freeze end end def ==(other) @criteria == other.criteria end def describe @criteria.inspect end def amqp_headers # TODO: needs to be smarter @criteria ? @criteria.merge('x-match' => 'all') : {} end def queue_key @criteria ? @criteria.map{|k,v| "#{k.downcase}_#{v.downcase}" }.join("_") : "" end def matches?(args) return true if @criteria.nil? return false if exclusive? and @criteria.length != args.keys.reject{|k| k =~ /^_/ }.length @criteria.all? do |key, val| args[key] == val end end def exclusive? !!exclusive end private def stringify_values(hash) hash.inject({}) {|h,(k,v)| h[k.to_s] = v.to_s h } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
woodhouse-1.0.0 | lib/woodhouse/queue_criteria.rb |
woodhouse-0.1.5 | lib/woodhouse/queue_criteria.rb |