class DEVp2p::Discovery::Service
Attributes
protocol[R]
Public Class Methods
new(app)
click to toggle source
Calls superclass method
DEVp2p::Service::new
# File lib/devp2p/discovery/service.rb, line 95 def initialize(app) super(app) logger.info "Discovery service init" @socket = nil @protocol = Protocol.new app, self end
Public Instance Methods
address()
click to toggle source
# File lib/devp2p/discovery/service.rb, line 138 def address ip = @app.config[:discovery][:listen_host] port = @app.config[:discovery][:listen_port] Address.new ip, port end
receive_message(address, message)
click to toggle source
# File lib/devp2p/discovery/service.rb, line 144 def receive_message(address, message) raise ArgumentError, 'address must be Address' unless address.instance_of?(Address) @protocol.receive_message address, message end
send_message(address, message)
click to toggle source
# File lib/devp2p/discovery/service.rb, line 149 def send_message(address, message) @sender.async.send_message address, message end
start()
click to toggle source
# File lib/devp2p/discovery/service.rb, line 103 def start logger.info 'starting discovery' ip = @app.config[:discovery][:listen_host] port = @app.config[:discovery][:listen_port] logger.info "starting udp listener", port: port, host: ip @socket = UDPSocket.new @socket.bind ip, port @receiver = Receiver.new self, @socket @sender = Sender.new self, @socket @receiver.async.start @sender.async.start nodes = @app.config[:discovery][:bootstrap_nodes] || [] @protocol.bootstrap( nodes.map {|x| Node.from_uri(x) } ) rescue puts $! puts $!.backtrace[0,10].join("\n") end
stop()
click to toggle source
# File lib/devp2p/discovery/service.rb, line 126 def stop logger.info "stopping discovery" @socket.close if @socket @sender.async.stop if @sender @receiver.async.stop if @receiver @socket = nil @sender = nil @receiver = nil end
Private Instance Methods
logger()
click to toggle source
# File lib/devp2p/discovery/service.rb, line 155 def logger @logger ||= Logger.new "p2p.discovery" end