Class: Botiasloop::Channels::Registry

Inherits:
Object
  • Object
show all
Defined in:
lib/botiasloop/channels.rb

Overview

Registry for channel classes

The Registry maintains a static mapping of channel identifiers to channel classes. It does not manage runtime instances - that is handled by ChannelsManager.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRegistry

Returns a new instance of Registry.



14
15
16
# File 'lib/botiasloop/channels.rb', line 14

def initialize
  @channels = {}
end

Instance Attribute Details

#channelsObject (readonly)

Returns the value of attribute channels.



12
13
14
# File 'lib/botiasloop/channels.rb', line 12

def channels
  @channels
end

Instance Method Details

#[](name) ⇒ Class?

Get channel class by name

Parameters:

  • name (Symbol)

    Channel identifier

Returns:

  • (Class, nil)

    Channel class or nil if not found



39
40
41
# File 'lib/botiasloop/channels.rb', line 39

def [](name)
  @channels[name]
end

#clearObject

Clear all registered channels Useful for testing to prevent state leakage



52
53
54
# File 'lib/botiasloop/channels.rb', line 52

def clear
  @channels.clear
end

#deregister(name) ⇒ Object

Deregister a channel by name

Parameters:

  • name (Symbol)

    Channel identifier



31
32
33
# File 'lib/botiasloop/channels.rb', line 31

def deregister(name)
  @channels.delete(name)
end

#namesArray<Symbol>

Get all registered channel names

Returns:

  • (Array<Symbol>)

    Channel identifiers



46
47
48
# File 'lib/botiasloop/channels.rb', line 46

def names
  @channels.keys
end

#register(channel_class) ⇒ Object

Register a channel class

Parameters:

  • channel_class (Class)

    Channel class inheriting from Base

Raises:



21
22
23
24
25
26
# File 'lib/botiasloop/channels.rb', line 21

def register(channel_class)
  identifier = channel_class.channel_identifier
  raise Error, "Channel class must define channel_name" unless identifier

  @channels[identifier] = channel_class
end