class Tapyrus::Network::PeerDiscovery
Attributes
configuration[R]
logger[R]
Public Class Methods
new(configuration)
click to toggle source
# File lib/tapyrus/network/peer_discovery.rb, line 6 def initialize(configuration) @logger = Tapyrus::Logger.create(:debug) @configuration = configuration end
Public Instance Methods
peers()
click to toggle source
get peer addresses, from DNS seeds.
# File lib/tapyrus/network/peer_discovery.rb, line 12 def peers # TODO add find from previous connected peer at first. (find_from_dns_seeds + seeds).uniq end
Private Instance Methods
dns_seeds()
click to toggle source
# File lib/tapyrus/network/peer_discovery.rb, line 19 def dns_seeds Tapyrus.chain_params.dns_seeds || [] end
find_from_dns_seeds()
click to toggle source
# File lib/tapyrus/network/peer_discovery.rb, line 27 def find_from_dns_seeds logger.debug 'discover peer address from DNS seeds.' dns_seeds.map do |seed| begin Socket.getaddrinfo(seed, Tapyrus.chain_params.default_port).map { |a| a[2] }.uniq rescue SocketError => e logger.error "SocketError occurred when load DNS seed: #{seed}, error: #{e.message}" nil end end.flatten.compact end
seeds()
click to toggle source
# File lib/tapyrus/network/peer_discovery.rb, line 23 def seeds [*configuration.conf[:connect]] end