Sha256: 54da7a4479f6e94bd85bebb6d7d50f178f533d36cb14a520a6cee8ac7cc3d473

Contents?: true

Size: 1019 Bytes

Versions: 15

Compression:

Stored size: 1019 Bytes

Contents

module Bitcoin
  module Network

    class PeerDiscovery

      attr_reader :logger, :configuration

      def initialize(configuration)
        @logger = Bitcoin::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
        Bitcoin.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 { |seed|
          begin
            Socket.getaddrinfo("#{seed}", Bitcoin.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
        }.flatten.compact
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
bitcoinrb-1.8.0 lib/bitcoin/network/peer_discovery.rb
bitcoinrb-1.7.0 lib/bitcoin/network/peer_discovery.rb
bitcoinrb-1.6.0 lib/bitcoin/network/peer_discovery.rb
bitcoinrb-1.5.0 lib/bitcoin/network/peer_discovery.rb
bitcoinrb-1.4.0 lib/bitcoin/network/peer_discovery.rb
bitcoinrb-1.3.0 lib/bitcoin/network/peer_discovery.rb
bitcoinrb-1.2.1 lib/bitcoin/network/peer_discovery.rb
bitcoinrb-1.2.0 lib/bitcoin/network/peer_discovery.rb
bitcoinrb-1.1.1 lib/bitcoin/network/peer_discovery.rb
bitcoinrb-1.1.0 lib/bitcoin/network/peer_discovery.rb
bitcoinrb-1.0.0 lib/bitcoin/network/peer_discovery.rb
bitcoinrb-0.9.0 lib/bitcoin/network/peer_discovery.rb
bitcoinrb-0.8.0 lib/bitcoin/network/peer_discovery.rb
bitcoinrb-0.7.0 lib/bitcoin/network/peer_discovery.rb
bitcoinrb-0.6.0 lib/bitcoin/network/peer_discovery.rb