class Smith::QueueFactory
Public Class Methods
new()
click to toggle source
# File lib/smith/messaging/queue_factory.rb, line 4 def initialize @cache = Cache.new end
Public Instance Methods
each_queue() { |queue| ... }
click to toggle source
Passes each queue to the supplied block.
# File lib/smith/messaging/queue_factory.rb, line 19 def each_queue @cache.each do |queue| yield queue end end
queues()
click to toggle source
Returns all queues as a hash, with the queue name being the key.
# File lib/smith/messaging/queue_factory.rb, line 26 def queues @cache end
receiver(queue_name, opts={}, &blk)
click to toggle source
Convenience method that returns a Receiver object.
# File lib/smith/messaging/queue_factory.rb, line 14 def receiver(queue_name, opts={}, &blk) create(queue_name, :receiver, opts, &blk) end
sender(queue_name, opts={}, &blk)
click to toggle source
Convenience method that returns a Sender object.
# File lib/smith/messaging/queue_factory.rb, line 9 def sender(queue_name, opts={}, &blk) create(queue_name, :sender, opts, &blk) end
Private Instance Methods
create(queue_name, type, opts={}, &blk)
click to toggle source
# File lib/smith/messaging/queue_factory.rb, line 32 def create(queue_name, type, opts={}, &blk) key = "#{type}:#{queue_name}" if @cache[key] blk.call(@cache[key]) else update_cache(key, opts) do |o| case type when :receiver Messaging::Receiver.new(queue_name, o, &blk) when :sender Messaging::Sender.new(queue_name, o, &blk) end end end end
update_cache(queue_name, opts, &blk)
click to toggle source
# File lib/smith/messaging/queue_factory.rb, line 48 def update_cache(queue_name, opts, &blk) dont_cache = (opts.has_key?(:dont_cache)) ? opts.delete(:dont_cache) : false if dont_cache blk.call(opts) else @cache.update(queue_name, blk.call(opts)) end end