class DEVp2p::Discovery::Receiver

Public Class Methods

new(service, socket) click to toggle source
Calls superclass method
# File lib/devp2p/discovery/service.rb, line 8
def initialize(service, socket)
  super()

  @service = service
  @socket = socket

  @stopped = false
end

Public Instance Methods

handle_packet(message, ip, port) click to toggle source
# File lib/devp2p/discovery/service.rb, line 35
def handle_packet(message, ip, port)
  logger.debug "handling packet", ip: ip, port: port, size: message.size
  @service.async.receive_message Address.new(ip, port), message
end
start() click to toggle source
# File lib/devp2p/discovery/service.rb, line 17
def start
  maxlen = Multiplexer.max_window_size * 2

  loop do
    break if @stopped || @socket.closed?

    message, info = @socket.recvfrom maxlen
    handle_packet message, info[3], info[1]
  end
rescue
  puts $!
  puts $!.backtrace[0,10].join("\n")
end
stop() click to toggle source
# File lib/devp2p/discovery/service.rb, line 31
def stop
  @stopped = true
end

Private Instance Methods

logger() click to toggle source
# File lib/devp2p/discovery/service.rb, line 42
def logger
  @logger ||= Logger.new "p2p.discovery"
end