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