Class: Takagi::Network::Registry
- Inherits:
-
Object
- Object
- Takagi::Network::Registry
- Extended by:
- Registry::Base
- Defined in:
- lib/takagi/network/registry.rb
Overview
Registry for transport implementations.
Provides discovery and factory methods for transports. Uses Registry::Base for thread-safe storage and consistent API.
Defined Under Namespace
Classes: TransportNotFoundError
Class Method Summary collapse
-
.for_scheme(scheme) ⇒ Class?
Find transport for a URI scheme.
-
.for_uri(uri) ⇒ Class
Find transport for a URI.
-
.register(name, klass, **metadata) ⇒ Object
Register a transport implementation.
Methods included from Registry::Base
[], clear!, count, each, empty?, entries, extended, get, keys, metadata_for, register, registered?, unregister
Class Method Details
.for_scheme(scheme) ⇒ Class?
Find transport for a URI scheme
35 36 37 38 39 40 41 42 |
# File 'lib/takagi/network/registry.rb', line 35 def for_scheme(scheme) # Get snapshot of transports to avoid holding lock during iteration snapshot = @mutex.synchronize { registry.values } snapshot.find do |transport| transport.scheme == scheme || transport.additional_schemes.include?(scheme) end end |
.for_uri(uri) ⇒ Class
Find transport for a URI
52 53 54 55 56 57 58 |
# File 'lib/takagi/network/registry.rb', line 52 def for_uri(uri) uri = URI(uri) if uri.is_a?(String) transport = for_scheme(uri.scheme) raise TransportNotFoundError, "No transport for scheme: #{uri.scheme}" unless transport transport end |
.register(name, klass, **metadata) ⇒ Object
Register a transport implementation
24 25 26 |
# File 'lib/takagi/network/registry.rb', line 24 def register(name, klass, **) super(name.to_sym, klass, **) end |