Class: Stargate::Server::RegistryVersion
- Inherits:
-
Object
- Object
- Stargate::Server::RegistryVersion
show all
- Includes:
- Enumerable, Gallus::Logging, Stargate::Serialization
- Defined in:
- lib/stargate/server/registry_version.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
#bencode, #to_json, #to_msgpack
Constructor Details
#initialize(version = 1, &block) ⇒ RegistryVersion
Returns a new instance of RegistryVersion.
14
15
16
17
18
19
|
# File 'lib/stargate/server/registry_version.rb', line 14
def initialize(version = 1, &block)
@version = version
@definitions = []
instance_eval(&block) if block_given?
end
|
Instance Attribute Details
#definitions ⇒ Object
Returns the value of attribute definitions.
12
13
14
|
# File 'lib/stargate/server/registry_version.rb', line 12
def definitions
@definitions
end
|
#version ⇒ Object
Returns the value of attribute version.
10
11
12
|
# File 'lib/stargate/server/registry_version.rb', line 10
def version
@version
end
|
Instance Method Details
#[](klass_name) ⇒ Object
41
42
43
44
|
# File 'lib/stargate/server/registry_version.rb', line 41
def [](klass_name)
metadata = @definitions.find { |metadata| metadata.name == klass_name }
metadata or raise ClassNotExposedError, "Class not registered under name: #{klass_name}"
end
|
#each(&block) ⇒ Object
46
47
48
|
# File 'lib/stargate/server/registry_version.rb', line 46
def each(&block)
@definitions.each(&block)
end
|
36
37
38
39
|
# File 'lib/stargate/server/registry_version.rb', line 36
def metadata_for(obj)
metadata = @definitions.find { |metadata| metadata.klass == obj.class }
metadata or raise ClassNotExposedError, "Class not registered: #{obj.class.name}"
end
|
#registered?(klass) ⇒ Boolean
32
33
34
|
# File 'lib/stargate/server/registry_version.rb', line 32
def registered?(klass)
@definitions.find { |metadata| metadata.klass == klass }
end
|
#serialize ⇒ Object
54
55
56
|
# File 'lib/stargate/server/registry_version.rb', line 54
def serialize
{ version: @version, definitions: @definitions.map(&:serialize) }
end
|
#serve(klass, params = {}, &block) ⇒ Object
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/stargate/server/registry_version.rb', line 21
def serve(klass, params = {}, &block)
raise ClassAlreadyRegisteredError, "Class already registered: #{klass.name}" if registered?(klass)
params.symbolize_keys!
klass_name = params[:as] || klass.name
log.debug("Registering class", local_class_name: klass.name, serve_as: klass_name)
@definitions << Metadata.new(klass, klass_name, &block)
self
end
|
#size ⇒ Object
50
51
52
|
# File 'lib/stargate/server/registry_version.rb', line 50
def size
@definitions.size
end
|