Method: Netz::Client#add_peer

Defined in:
lib/netz/client.rb

#add_peer(peer_socket) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/netz/client.rb', line 33

def add_peer(peer_socket)
  @port += 1
  Thread.new do
    peer_server = TCPServer.open @port 
    puts "waiting for peer on per-peer port #{@port}"
    peer = peer_server.accept
    puts "accepted peer."
    @peers.push(peer)
  end
  #push port, then ip strings
  peer_socket << [@port].pack("I") 
  peer_socket << [@peers.size].pack("I") 
  @peers.each do |peer_socket|
    # TODO will this always be peeraddr? or sometime addr depending on Server vs Socket?
    to_send_address = peer_socket.peeraddr[3].split(":").last
    peer_socket << [to_send_address.length].pack("I") 
    peer_socket << to_send_address
  end
end