Class: Ace::Hitl::Hermes::Molecules::HermesChannels::Registry
- Inherits:
-
Object
- Object
- Ace::Hitl::Hermes::Molecules::HermesChannels::Registry
- Defined in:
- lib/ace/hitl/hermes/molecules/hermes_channels.rb
Overview
The channel registry the plugin owns (rejestr kanalow). Token validation happens here, fail closed; folder existence and writability are re-verified at every folder operation by the Box (a channel may be registered before its folder exists).
Instance Method Summary collapse
- #available ⇒ Object
- #default ⇒ Object
- #default=(name) ⇒ Object
-
#initialize ⇒ Registry
constructor
A new instance of Registry.
- #register(name, machine:, folder:) ⇒ Object
- #resolve(name) ⇒ Object
- #resolve_default ⇒ Object
Constructor Details
#initialize ⇒ Registry
Returns a new instance of Registry.
30 31 32 33 |
# File 'lib/ace/hitl/hermes/molecules/hermes_channels.rb', line 30 def initialize @channels = {} @default_name = nil end |
Instance Method Details
#available ⇒ Object
82 83 84 |
# File 'lib/ace/hitl/hermes/molecules/hermes_channels.rb', line 82 def available @channels.keys.sort end |
#default ⇒ Object
71 72 73 |
# File 'lib/ace/hitl/hermes/molecules/hermes_channels.rb', line 71 def default @default_name end |
#default=(name) ⇒ Object
66 67 68 69 |
# File 'lib/ace/hitl/hermes/molecules/hermes_channels.rb', line 66 def default=(name) resolve(name) @default_name = name end |
#register(name, machine:, folder:) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/ace/hitl/hermes/molecules/hermes_channels.rb', line 35 def register(name, machine:, folder:) name = Atoms::HermesTokens.validate!(name, "channel name") machine = Atoms::HermesTokens.validate!(machine, "machine name") unless folder.is_a?(String) && File.absolute_path?(folder) raise ContractError, "hermes channel #{name} folder must be an absolute directory path " \ "(got #{folder.inspect})" end base = File.basename(folder) unless Atoms::HermesTokens.valid?(base) raise ContractError, "hermes channel #{name} folder basename must match " \ "#{Atoms::HermesTokens::PATTERN.inspect} (got #{base.inspect})" end if @channels.key?(name) raise ContractError, "hermes channel already registered: #{name}" end @channels[name] = Channel.new(name: name, machine: machine, folder: folder) name end |
#resolve(name) ⇒ Object
57 58 59 60 61 62 63 64 |
# File 'lib/ace/hitl/hermes/molecules/hermes_channels.rb', line 57 def resolve(name) channel = @channels[name] unless channel raise UnknownChannelError, "unknown hermes channel #{name.inspect} (available: #{available.join(", ")})" end channel end |
#resolve_default ⇒ Object
75 76 77 78 79 80 |
# File 'lib/ace/hitl/hermes/molecules/hermes_channels.rb', line 75 def resolve_default unless @default_name raise ContractError, "no default hermes channel registered" end resolve(@default_name) end |