class Noam::Message::Marco
Constants
- MAX_RESPONSE_LENGTH
- WAIT_TIME
Attributes
port[R]
Public Class Methods
new(room_name, lemma_name)
click to toggle source
# File lib/noam_lemma/message/marco.rb, line 9 def initialize(room_name, lemma_name) @room_name = room_name @lemma_name = lemma_name end
Public Instance Methods
noam_encode()
click to toggle source
# File lib/noam_lemma/message/marco.rb, line 29 def noam_encode ["marco", @lemma_name, @room_name, Noam::DEVICE_TYPE, Noam::VERSION].to_json end
start()
click to toggle source
# File lib/noam_lemma/message/marco.rb, line 14 def start bcast_socket = UDPSocket.new bcast_socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, true) loop do bcast_socket.send(noam_encode, 0, "255.255.255.255", Noam::BEACON_PORT) if message_received?(bcast_socket) break end end get_polo_response(bcast_socket) end
Private Instance Methods
get_polo_response(socket)
click to toggle source
# File lib/noam_lemma/message/marco.rb, line 42 def get_polo_response(socket) message, sockaddr = socket.recvfrom(MAX_RESPONSE_LENGTH) _, _, noam_port = JSON.parse(message) _, _, addr, _ = sockaddr Polo.new(addr, noam_port) end
message_received?(socket)
click to toggle source
# File lib/noam_lemma/message/marco.rb, line 38 def message_received?(socket) IO.select([socket], [], [], WAIT_TIME) end