Class: Supervision::Registry
- Inherits:
-
Object
- Object
- Supervision::Registry
- Defined in:
- lib/supervision/registry.rb
Overview
A class responsible for registering/unregistering circuits
Instance Method Summary collapse
-
#[](name) ⇒ Object
(also: #get)
Retrieve a circuit by name.
-
#[]=(name, circuit) ⇒ Object
(also: #register)
Register a circuit.
-
#clear ⇒ Hash
Remove all registered circuits.
-
#delete(name) ⇒ Object
(also: #unregister)
Remove from registry.
-
#empty? ⇒ Boolean
Check if registry is empty or not.
-
#initialize ⇒ Registry
constructor
Initialize a Registry.
-
#names ⇒ Array
Retrieve registered circuits’ names.
-
#registered?(name) ⇒ Boolean
Check if circuit is in registry.
Constructor Details
#initialize ⇒ Registry
Initialize a Registry
9 10 11 12 |
# File 'lib/supervision/registry.rb', line 9 def initialize @lock = Mutex.new @map = {} end |
Instance Method Details
#[](name) ⇒ Object Also known as: get
Retrieve a circuit by name
40 41 42 43 44 |
# File 'lib/supervision/registry.rb', line 40 def [](name) @lock.synchronize do @map[name.to_sym] end end |
#[]=(name, circuit) ⇒ Object Also known as: register
Register a circuit
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/supervision/registry.rb', line 23 def []=(name, circuit) unless circuit.is_a?(CircuitBreaker) raise TypeError, 'not a type of circuit breaker' end if registered?(name) raise DuplicateEntryError, "`#{name}` is already registered" end @lock.synchronize do @map[name.to_sym] = circuit end end |
#clear ⇒ Hash
Remove all registered circuits
94 95 96 97 98 99 100 101 |
# File 'lib/supervision/registry.rb', line 94 def clear hash = nil @lock.synchronize do hash = @map.dup @map.clear end hash end |
#delete(name) ⇒ Object Also known as: unregister
Remove from registry
49 50 51 52 53 |
# File 'lib/supervision/registry.rb', line 49 def delete(name) @lock.synchronize do @map.delete name.to_sym end end |
#empty? ⇒ Boolean
Check if registry is empty or not
82 83 84 |
# File 'lib/supervision/registry.rb', line 82 def empty? @lock.synchronize { @map.empty? } end |
#names ⇒ Array
Retrieve registered circuits’ names
73 74 75 |
# File 'lib/supervision/registry.rb', line 73 def names @lock.synchronize { @map.keys } end |
#registered?(name) ⇒ Boolean
Check if circuit is in registry
64 65 66 |
# File 'lib/supervision/registry.rb', line 64 def registered?(name) names.include?(name) || names.include?(name.to_sym) end |