Class: DRbQS::ConnectionClient

Inherits:
Object
  • Object
show all
Defined in:
lib/drbqs/connection.rb

Overview

The class of connection to s.erver.

Instance Method Summary collapse

Constructor Details

#initialize(message, logger = nil) ⇒ ConnectionClient

Returns a new instance of ConnectionClient.



6
7
8
9
10
11
# File 'lib/drbqs/connection.rb', line 6

def initialize(message, logger = nil)
  @message = message
  @logger = logger
  @id_number = nil
  @id_string = create_id_string
end

Instance Method Details

#get_finalizationObject



42
43
44
# File 'lib/drbqs/connection.rb', line 42

def get_finalization
  get_special_task(:finalize)
end

#get_idObject



19
20
21
22
23
24
25
26
# File 'lib/drbqs/connection.rb', line 19

def get_id
  unless @id_number
    @message.write([:server, :connect, @id_string])
    @id_number = @message.take([@id_string, Fixnum])[1]
    @logger.info("Get node id: #{@id_number}") if @logger
  end
  @id_number
end

#get_initializationObject



38
39
40
# File 'lib/drbqs/connection.rb', line 38

def get_initialization
  get_special_task(:initialize)
end

#respond_signalObject



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/drbqs/connection.rb', line 46

def respond_signal
  begin
    node_id, sym = @message.take([@id_number, Symbol], 0)
    @logger.info("Get signal: #{sym.inspect}") if @logger
    case sym
    when :alive_p
      @message.write([:server, :alive, @id_number])
      @logger.info("Send alive signal of node id #{@id_number}") if @logger
    when :exit, :finalize
      return sym
    else
      raise "Get invalid signal: #{sym.inspect}"
    end
  rescue Rinda::RequestExpiredError
  end
end

#send_node_error(error_message) ⇒ Object



63
64
65
# File 'lib/drbqs/connection.rb', line 63

def send_node_error(error_message)
  @message.write([:server, :node_error, [@id_number, error_message]])
end