Class: Legion::Extensions::HandleRegistry
- Inherits:
-
Object
- Object
- Legion::Extensions::HandleRegistry
- Defined in:
- lib/legion/extensions/handle_registry.rb
Instance Method Summary collapse
- #all ⇒ Object
- #delete(lex_name) ⇒ Object
- #dispatch_allowed?(lex_name) ⇒ Boolean
- #fetch(lex_name) ⇒ Object
-
#initialize ⇒ HandleRegistry
constructor
A new instance of HandleRegistry.
- #loaded ⇒ Object
- #register(lex_name, **attrs) ⇒ Object
- #reset! ⇒ Object
- #running ⇒ Object
- #transition(lex_name, state) ⇒ Object
- #update(lex_name, **attrs) ⇒ Object
Constructor Details
#initialize ⇒ HandleRegistry
Returns a new instance of HandleRegistry.
8 9 10 11 |
# File 'lib/legion/extensions/handle_registry.rb', line 8 def initialize @handles = {} @mutex = Mutex.new end |
Instance Method Details
#all ⇒ Object
37 38 39 |
# File 'lib/legion/extensions/handle_registry.rb', line 37 def all @mutex.synchronize { @handles.values.dup } end |
#delete(lex_name) ⇒ Object
56 57 58 |
# File 'lib/legion/extensions/handle_registry.rb', line 56 def delete(lex_name) @mutex.synchronize { @handles.delete(normalize_name(lex_name)) } end |
#dispatch_allowed?(lex_name) ⇒ Boolean
49 50 51 52 53 54 |
# File 'lib/legion/extensions/handle_registry.rb', line 49 def dispatch_allowed?(lex_name) handle = fetch(lex_name) return true unless handle handle.dispatchable? end |
#fetch(lex_name) ⇒ Object
33 34 35 |
# File 'lib/legion/extensions/handle_registry.rb', line 33 def fetch(lex_name) @mutex.synchronize { @handles[normalize_name(lex_name)] } end |
#loaded ⇒ Object
45 46 47 |
# File 'lib/legion/extensions/handle_registry.rb', line 45 def loaded all.select(&:loaded?) end |
#register(lex_name, **attrs) ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/legion/extensions/handle_registry.rb', line 13 def register(lex_name, **attrs) key = normalize_name(lex_name) @mutex.synchronize do current = @handles[key] @handles[key] = current ? current.with(**attrs) : Handle.new(lex_name: key, **attrs) end end |
#reset! ⇒ Object
60 61 62 |
# File 'lib/legion/extensions/handle_registry.rb', line 60 def reset! @mutex.synchronize { @handles.clear } end |
#running ⇒ Object
41 42 43 |
# File 'lib/legion/extensions/handle_registry.rb', line 41 def running all.select(&:running?) end |
#transition(lex_name, state) ⇒ Object
21 22 23 |
# File 'lib/legion/extensions/handle_registry.rb', line 21 def transition(lex_name, state) update(lex_name, state: state) end |