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