diff --git a/lib/cli/toolkit/server/command_server.rb b/lib/cli/toolkit/server/command_server.rb new file mode 100644 index 0000000..2998851 --- /dev/null +++ b/lib/cli/toolkit/server/command_server.rb @@ -0,0 +1,21 @@ +require 'drb' +require_relative 'service_discovery' + +module CliToolkit::Server + class CommandServer + def initialize + @server = DRb.start_service('druby://localhost:0', self) + @port = URI(@server.uri).port + + end + + def commands + + end + + def start + + end + + end +end \ No newline at end of file diff --git a/lib/cli/toolkit/server/discovery_server.rb b/lib/cli/toolkit/server/discovery_server.rb new file mode 100644 index 0000000..cd6ba7c --- /dev/null +++ b/lib/cli/toolkit/server/discovery_server.rb @@ -0,0 +1,24 @@ +module CliToolkit::Server + class DiscoveryServer + def initialize + @registered = false + end + + def register(service_name, service_url, service_port, service_description) + puts "registered" + puts service_name + puts service_url + puts service_port + puts service_description + + @registered = true + DRb.stop_service + @registered + end + + def start + @server = DRb.start_service('druby://localhost:9100', self) + puts "Server PID is #{Process.pid}" + end + end +end \ No newline at end of file diff --git a/lib/cli/toolkit/server/service_discovery.rb b/lib/cli/toolkit/server/service_discovery.rb new file mode 100644 index 0000000..f9859be --- /dev/null +++ b/lib/cli/toolkit/server/service_discovery.rb @@ -0,0 +1,37 @@ +module Toolkit::Server + class Error < StandardError; end + + class ServiceDiscovery + def initialize(service_name:, service_url:, service_port:, service_description:) + @service_name = service_name + @service_url = service_url + @service_port = service_port + @service_description = service_description + @registered = false + puts "hi" + end + + def broadcast(service_name, service_url, service_port, service_description) + puts "broadcasting" + response = DRbObject.new_with_uri("druby://localhost:9100") + response.register(service_name, service_url, service_port, service_description) + true + rescue => e + puts e + puts "Server is not running waiting" + false + end + + def register + puts "registering" + loop do + server = DRb.start_service('druby://localhost:0', self) + @registered = DRbObject.new_with_uri(server.uri).broadcast(@service_name, @service_url, @service_port, @service_description) + server.stop_service + break if @registered + sleep 5 + DRb.start_service('druby://localhost:0', self) + end + end + end +end \ No newline at end of file