Class: Stargate::Server::RegistryVersion

Inherits:
Object
  • Object
show all
Includes:
Enumerable, Gallus::Logging, Stargate::Serialization
Defined in:
lib/stargate/server/registry_version.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Stargate::Serialization

#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

#definitionsObject (readonly)

Returns the value of attribute definitions.



12
13
14
# File 'lib/stargate/server/registry_version.rb', line 12

def definitions
  @definitions
end

#versionObject (readonly)

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)
   = @definitions.find { || .name == klass_name }
   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

#metadata_for(obj) ⇒ Object



36
37
38
39
# File 'lib/stargate/server/registry_version.rb', line 36

def (obj)
   = @definitions.find { || .klass == obj.class }
   or raise ClassNotExposedError, "Class not registered: #{obj.class.name}"
end

#registered?(klass) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/stargate/server/registry_version.rb', line 32

def registered?(klass)
  @definitions.find { || .klass == klass }
end

#serializeObject



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 << .new(klass, klass_name, &block)

  self
end

#sizeObject



50
51
52
# File 'lib/stargate/server/registry_version.rb', line 50

def size
  @definitions.size
end