Module: Takagi::Base::ReactorManagement
- Included in:
- Takagi::Base, Controller
- Defined in:
- lib/takagi/base/reactor_management.rb,
sig/takagi/base/reactor_management.rbs
Overview
Manages reactor registration and lifecycle for observable/observer patterns.
Extracted from Base class to follow Single Responsibility Principle. Handles reactor DSL blocks and reactor class registration.
Instance Method Summary collapse
-
#reactor(threads: 2, name: nil, interval: 1.0) {|arg0| ... } ⇒ Object
Defines a reactor using a DSL block.
-
#start_reactors ⇒ Object
Starts all registered reactors.
-
#stop_reactors ⇒ void
Stops all registered reactors.
-
#use_reactor(name, klass_or_instance) ⇒ Object
Registers a reactor class instance.
Instance Method Details
#reactor(threads: 2, name: nil, interval: 1.0) {|arg0| ... } ⇒ Object
Defines a reactor using a DSL block
The block is evaluated in the context of a new Reactor instance, allowing you to define observables and observers inline.
40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/takagi/base/reactor_management.rb', line 40 def reactor(threads: 2, name: nil, interval: 1.0, &block) reactor_name = name || "#{self.name.split('::').last.downcase}-reactor" reactor_instance = Takagi::Observable::Reactor.new( threads: threads, name: reactor_name, interval: interval ) reactor_instance.instance_eval(&block) # Register with Observable::Registry Takagi::Observable::Registry.register(reactor_name.to_sym, reactor_instance) reactor_instance end |
#start_reactors ⇒ Object
Starts all registered reactors
Called automatically by server lifecycle management during boot. Can be called manually if needed.
92 93 94 |
# File 'lib/takagi/base/reactor_management.rb', line 92 def start_reactors Takagi::Observable::Registry.start_all end |
#stop_reactors ⇒ void
This method returns an undefined value.
Stops all registered reactors
99 100 101 |
# File 'lib/takagi/base/reactor_management.rb', line 99 def stop_reactors Takagi::Observable::Registry.stop_all end |
#use_reactor(name, klass_or_instance) ⇒ Object
Registers a reactor class instance
Useful when you have a custom reactor class that you want to instantiate and register with the reactor registry.
75 76 77 78 79 80 81 82 83 84 |
# File 'lib/takagi/base/reactor_management.rb', line 75 def use_reactor(name, klass_or_instance) reactor_instance = if klass_or_instance.is_a?(Class) klass_or_instance.new else klass_or_instance end Takagi::Observable::Registry.register(name.to_sym, reactor_instance) reactor_instance end |