class Soda::Queues::Registry

Attributes

entries[R]
mutex[R]

Public Class Methods

new() click to toggle source
# File lib/soda/queues/registry.rb, line 6
def initialize
  @entries = []
  @mutex   = Mutex.new
end

Public Instance Methods

default!() click to toggle source

TODO: improve error

# File lib/soda/queues/registry.rb, line 65
def default!
  entries.first or raise
end
deregister(name, *) click to toggle source
# File lib/soda/queues/registry.rb, line 47
def deregister(name, *)
  mutex.synchronize do
    entries.delete_if do |entry|
      entry.name == name
    end
  end
end
each(&block) click to toggle source
# File lib/soda/queues/registry.rb, line 11
def each(&block)
  entries.each(&block)
end
include?(name) click to toggle source
# File lib/soda/queues/registry.rb, line 28
def include?(name)
  entries.any? do |entry|
    entry.name == name
  end
end
index(name) click to toggle source
# File lib/soda/queues/registry.rb, line 34
def index(name)
  entries.find_index do |entry|
    entry.name == name
  end
end
register(name, url = nil, **options) click to toggle source
# File lib/soda/queues/registry.rb, line 15
def register(name, url = nil, **options)
  if include?(name)
    replace(name, url, **options)
  else
    mutex.synchronize do
      queue = Soda::Queue.new(name, url, options)
      queue.tap do
        entries << queue
      end
    end
  end
end
replace(name, url = nil, **options) click to toggle source
# File lib/soda/queues/registry.rb, line 40
def replace(name, url = nil, **options)
  queue = Soda::Queue.new(name, url, options)
  queue.tap do
    entries[index(name)] = queue
  end
end
select(name) click to toggle source

Try to find a registered queue. If one is not registered, then create a new one for the specified name (with no specified URL or options).

# File lib/soda/queues/registry.rb, line 57
def select(name)
  entry = entries.detect { |ent| ent.name == name }
  (entry = register(name)) if entry.nil?

  entry
end