class RubyNos::UDPReceptor
Attributes
port[RW]
Public Class Methods
new()
click to toggle source
# File lib/ruby_nos/udp_receptor.rb, line 8 def initialize configure end
Public Instance Methods
listen(processor)
click to toggle source
# File lib/ruby_nos/udp_receptor.rb, line 24 def listen processor Thread.new do loop do message = @socket.recvfrom(512).first processor.process_message(message) end end end
multicast_address()
click to toggle source
# File lib/ruby_nos/udp_receptor.rb, line 16 def multicast_address @multicast_address ||= RubyNos.group_address end
socket()
click to toggle source
# File lib/ruby_nos/udp_receptor.rb, line 20 def socket @socket ||= UDPSocket.new end
Private Instance Methods
bind_addr()
click to toggle source
# File lib/ruby_nos/udp_receptor.rb, line 43 def bind_addr "0.0.0.0" end
configure()
click to toggle source
# File lib/ruby_nos/udp_receptor.rb, line 35 def configure RubyNos.logger.send(:info, "Binding socket to #{bind_addr} IP") membership = IPAddr.new(multicast_address).hton + IPAddr.new(bind_addr).hton socket.setsockopt(:IPPROTO_IP, :IP_ADD_MEMBERSHIP, membership) socket.setsockopt(:SOL_SOCKET, :SO_REUSEADDR, 1) socket.bind(bind_addr, port) end