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