Class: Soda::Queues::Registry

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/soda/queues/registry.rb

Instance Method Summary collapse

Constructor Details

#initializeRegistry

Returns a new instance of Registry.



6
7
8
9
# File 'lib/soda/queues/registry.rb', line 6

def initialize
  @entries = []
  @mutex   = Mutex.new
end

Instance Method Details

#default!Object

TODO: improve error



65
66
67
# File 'lib/soda/queues/registry.rb', line 65

def default!
  entries.first or raise
end

#deregister(name) ⇒ Object



47
48
49
50
51
52
53
# 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) ⇒ Object



11
12
13
# File 'lib/soda/queues/registry.rb', line 11

def each(&block)
  entries.each(&block)
end

#include?(name) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
31
32
# File 'lib/soda/queues/registry.rb', line 28

def include?(name)
  entries.any? do |entry|
    entry.name == name
  end
end

#index(name) ⇒ Object



34
35
36
37
38
# 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) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
# 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) ⇒ Object



40
41
42
43
44
45
# 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) ⇒ Object

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).



57
58
59
60
61
62
# 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