Sha256: dd1a1421eb43a0821b62e96d6d0d2db98e6d5969dc9eeb767bbd7d3ba9b681bd

Contents?: true

Size: 1.26 KB

Versions: 4

Compression:

Stored size: 1.26 KB

Contents

require 'socket'

module DRbQS
  # The class of connection to s.erver.
  class ConnectionClient
    def initialize(message, logger = nil)
      @message = message
      @logger = logger
      @id_number = nil
      @id_string = create_id_string
    end

    def create_id_string
      t = Time.now
      sprintf("%d%d%d:#{Socket.gethostname}", t.to_i, t.usec, rand(1000))
    end
    private :create_id_string

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

    def get_initialization
      begin
        ary = @message.read([:initialize, nil, Symbol, nil], 0)
        ary[1..-1]
      rescue Rinda::RequestExpiredError
        nil
      end
    end

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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
drbqs-0.0.9 lib/drbqs/connection.rb
drbqs-0.0.8 lib/drbqs/connection.rb
drbqs-0.0.7 lib/drbqs/connection.rb
drbqs-0.0.6 lib/drbqs/connection.rb