Class: Dist::Client

Inherits:
Object
  • Object
show all
Includes:
Encoding
Defined in:
lib/client.rb

Instance Method Summary collapse

Methods included from Encoding

#send_string

Constructor Details

#initialize(address) ⇒ Client

Returns a new instance of Client.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/client.rb', line 13

def initialize(address)
  leave_a_will

  host, port = address.split(':')
  @socket = TCPSocket.new(host, port.to_i)

  @socket << Messages::REQUEST_ROLE

  receive_message Messages::SEND_ROLE_CONFIRM
  role = receive_string

  puts "Your role: #{role.dump}"

  @socket << Messages::CONFIRM_ROLE
  send_string @socket, role

  # spin up rack app
  require "roles/#{role}/app"
  Thread.new { Rack::Handler::Mongrel.run App.new, :Port => 9501 }

  while true
    receive_message Messages::REQUEST_HEARTBEAT
    @socket << Messages::HEARTBEAT
  end
rescue UnexpectedMessage
  puts 'Disconnected.'
end