Class: RubySkynet::StaticServiceRegistry
- Inherits:
-
Object
- Object
- RubySkynet::StaticServiceRegistry
- Includes:
- SemanticLogger::Loggable
- Defined in:
- lib/ruby_skynet/static_service_registry.rb
Instance Method Summary collapse
-
#deregister_service(name, version, region, hostname, port) ⇒ Object
Deregister the supplied service from the Registry.
-
#initialize(params = {}) ⇒ StaticServiceRegistry
constructor
Create a service registry.
-
#on_server_removed(server, &block) ⇒ Object
Invokes registered callbacks when a specific server is shutdown or terminates Not when a server de-registers itself The callback will only be called once and will need to be re-registered after being called if future callbacks are required for that server.
-
#register_service(name, version, region, hostname, port) ⇒ Object
Register the supplied service at this Skynet Server host and Port Returns the UUID for the service that was created.
-
#servers_for(name, version = '*', region = RubySkynet.region) ⇒ Object
Returns [Array<String>] a list of servers implementing the requested service.
-
#to_h ⇒ Object
Returns the Service Registry as a Hash.
Constructor Details
#initialize(params = {}) ⇒ StaticServiceRegistry
Create a service registry
19 20 21 22 |
# File 'lib/ruby_skynet/static_service_registry.rb', line 19 def initialize(params = {}) @services = params[:registry] raise "Missing :registry in config that must list the availables services" unless @services end |
Instance Method Details
#deregister_service(name, version, region, hostname, port) ⇒ Object
Deregister the supplied service from the Registry
39 40 41 42 43 44 45 46 47 |
# File 'lib/ruby_skynet/static_service_registry.rb', line 39 def deregister_service(name, version, region, hostname, port) server = "#{hostname}:#{port}" key = "#{name}/#{version}/#{region}" if servers = @services[key] servers.delete_if {|s| s == server} @services.delete(key) if servers.count == 0 end key end |
#on_server_removed(server, &block) ⇒ Object
Invokes registered callbacks when a specific server is shutdown or terminates Not when a server de-registers itself The callback will only be called once and will need to be re-registered after being called if future callbacks are required for that server
70 71 72 |
# File 'lib/ruby_skynet/static_service_registry.rb', line 70 def on_server_removed(server, &block) #nop end |
#register_service(name, version, region, hostname, port) ⇒ Object
Register the supplied service at this Skynet Server host and Port Returns the UUID for the service that was created
31 32 33 34 35 36 |
# File 'lib/ruby_skynet/static_service_registry.rb', line 31 def register_service(name, version, region, hostname, port) server = "#{hostname}:#{port}" key = "#{name}/#{version}/#{region}" (@services[key] ||= []) << server key end |
#servers_for(name, version = '*', region = RubySkynet.region) ⇒ Object
Returns [Array<String>] a list of servers implementing the requested service
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/ruby_skynet/static_service_registry.rb', line 50 def servers_for(name, version='*', region=RubySkynet.region) if version == '*' # Find the highest version for the named service in this region version = -1 @services.keys.each do |key| if match = key.match(/#{name}\/(\d+)\/#{region}/) ver = match[1].to_i version = ver if ver > version end end end servers = @services["#{name}/#{version}/#{region}"] raise ServiceUnavailable.new("No servers available for service: #{name} with version: #{version} in region: #{region}") unless servers servers end |
#to_h ⇒ Object
Returns the Service Registry as a Hash
25 26 27 |
# File 'lib/ruby_skynet/static_service_registry.rb', line 25 def to_h @services.dup end |