Sha256: 11536f3c47a5f35923528958c7aec12d6888b5ab4a29302f2998e29996d50bd2

Contents?: true

Size: 1.04 KB

Versions: 8

Compression:

Stored size: 1.04 KB

Contents

module Tapyrus
  module Network
    class PeerDiscovery
      attr_reader :logger, :configuration

      def initialize(configuration)
        @logger = Tapyrus::Logger.create(:debug)
        @configuration = configuration
      end

      # get peer addresses, from DNS seeds.
      def peers
        # TODO add find from previous connected peer at first.
        (find_from_dns_seeds + seeds).uniq
      end

      private

      def dns_seeds
        Tapyrus.chain_params.dns_seeds || []
      end

      def seeds
        [*configuration.conf[:connect]]
      end

      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
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
tapyrus-0.3.4 lib/tapyrus/network/peer_discovery.rb
tapyrus-0.3.3 lib/tapyrus/network/peer_discovery.rb
tapyrus-0.3.2 lib/tapyrus/network/peer_discovery.rb
tapyrus-0.3.1 lib/tapyrus/network/peer_discovery.rb
tapyrus-0.3.0 lib/tapyrus/network/peer_discovery.rb
tapyrus-0.2.13 lib/tapyrus/network/peer_discovery.rb
tapyrus-0.2.12 lib/tapyrus/network/peer_discovery.rb
tapyrus-0.2.10 lib/tapyrus/network/peer_discovery.rb