Module: Takagi::ReactorRegistry

Extended by:
Takagi::Registry::Base
Defined in:
lib/takagi/reactor_registry.rb

Overview

Tracks background reactor instances and controls their lifecycle.

Uses Registry::Base for thread-safe storage and consistent API. Reactors are stored with auto-incrementing IDs.

NOTE: Cannot be moved to Reactor::Registry because Reactor is already a class. Keeping as ReactorRegistry at top level for now.

Examples:

Register and manage reactors

reactor = SomeReactor.new
id = ReactorRegistry.register(reactor)
ReactorRegistry.start_all
ReactorRegistry.stop_all

Class Method Summary collapse

Methods included from Takagi::Registry::Base

[], clear!, count, each, empty?, entries, extended, get, keys, metadata_for, register, registered?, unregister

Class Method Details

.reactorsArray

Get all registered reactors

Returns:

  • (Array)

    List of reactor instances



34
35
36
# File 'lib/takagi/reactor_registry.rb', line 34

def reactors
  @mutex.synchronize { registry.values }
end

.register(reactor) ⇒ Integer

Register a reactor instance

Parameters:

  • reactor (Object)

    Reactor instance

Returns:

  • (Integer)

    Auto-assigned reactor ID



25
26
27
28
29
# File 'lib/takagi/reactor_registry.rb', line 25

def register(reactor)
  id = next_id
  super(id, reactor)
  id
end

.start_allvoid

This method returns an undefined value.

Start all registered reactors



41
42
43
# File 'lib/takagi/reactor_registry.rb', line 41

def start_all
  reactors.each(&:start)
end

.stop_allvoid

This method returns an undefined value.

Stop all registered reactors



48
49
50
51
52
# File 'lib/takagi/reactor_registry.rb', line 48

def stop_all
  reactors.each do |reactor|
    reactor.stop if reactor.respond_to?(:stop)
  end
end