Sha256: d404a12e507316eb8aa76e80bbc7ab8f37bd8ab8e3b6b4fc9fae91b716b9d560
Contents?: true
Size: 1.68 KB
Versions: 3
Compression:
Stored size: 1.68 KB
Contents
require 'drbqs/node_list' module DRbQS class MessageServer def initialize(message, logger = nil) @message = message @node_list = NodeList.new @logger = logger end def get_message begin mes = @message.take([Symbol, nil], 0) manage_message(*mes) rescue Rinda::RequestExpiredError nil end end def manage_message(mes, arg) @logger.info("Get message") { [mes, arg] } if @logger case mes when :connect a = [arg, @node_list.get_new_id(arg)] @logger.info("New node") { a } if @logger @message.write(a) when :alive @node_list.set_alive(arg) when :exit_server @logger.info("Get exit message from #{arg.to_s}") if @logger return :exit_server else @logger.error("Invalid message from #{arg.to_s}") if @logger return nil end end private :manage_message def check_connection deleted = @node_list.delete_not_alive @logger.info("IDs of deleted nodes") { deleted } if @logger @node_list.each do |id, str| @message.write([id, :alive_p]) end @node_list.set_check_connection deleted end def send_exit @node_list.each do |node_id, id_str| @message.write([node_id, :exit]) end end def node_not_exist? @node_list.empty? end # If the task has already set, # the method overwrite old task of initialization by new task. def set_initialization(task) begin @message.take([:initialize, nil, Symbol, nil], 0) rescue Rinda::RequestExpiredError end @message.write(task.drb_args(:initialize)) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
drbqs-0.0.8 | lib/drbqs/message.rb |
drbqs-0.0.7 | lib/drbqs/message.rb |
drbqs-0.0.6 | lib/drbqs/message.rb |