Class: DispatchPolicy::Registry
- Inherits:
-
Object
- Object
- DispatchPolicy::Registry
- Defined in:
- lib/dispatch_policy/registry.rb
Instance Method Summary collapse
- #[](name) ⇒ Object
- #clear ⇒ Object
- #each(&block) ⇒ Object
- #fetch(name) ⇒ Object
-
#initialize ⇒ Registry
constructor
A new instance of Registry.
- #names ⇒ Object
- #register(policy, owner: nil) ⇒ Object
- #size ⇒ Object
Constructor Details
#initialize ⇒ Registry
Returns a new instance of Registry.
5 6 7 8 |
# File 'lib/dispatch_policy/registry.rb', line 5 def initialize @mutex = Mutex.new @policies = {} end |
Instance Method Details
#[](name) ⇒ Object
26 27 28 |
# File 'lib/dispatch_policy/registry.rb', line 26 def [](name) fetch(name) end |
#clear ⇒ Object
42 43 44 |
# File 'lib/dispatch_policy/registry.rb', line 42 def clear @mutex.synchronize { @policies.clear } end |
#each(&block) ⇒ Object
34 35 36 |
# File 'lib/dispatch_policy/registry.rb', line 34 def each(&block) @policies.values.map { |e| e[:policy] }.each(&block) end |
#fetch(name) ⇒ Object
21 22 23 24 |
# File 'lib/dispatch_policy/registry.rb', line 21 def fetch(name) entry = @policies[name.to_s] entry && entry[:policy] end |
#names ⇒ Object
30 31 32 |
# File 'lib/dispatch_policy/registry.rb', line 30 def names @policies.keys end |
#register(policy, owner: nil) ⇒ Object
10 11 12 13 14 15 16 17 18 19 |
# File 'lib/dispatch_policy/registry.rb', line 10 def register(policy, owner: nil) @mutex.synchronize do existing = @policies[policy.name] if existing && existing[:owner] != owner raise PolicyAlreadyRegistered, "policy #{policy.name.inspect} already registered for #{existing[:owner]}" end @policies[policy.name] = { policy: policy, owner: owner } end policy end |
#size ⇒ Object
38 39 40 |
# File 'lib/dispatch_policy/registry.rb', line 38 def size @policies.size end |