class Bundler::MirrorSockets - bundler-1.15.4 Documentation

# class Bundler::MirrorSockets

Class used to build the list of sockets that correspond to

    a given mirror.

One mirror may correspond to many different addresses, both

    because of it having many dns entries or because
    the network interface is both ipv4 and ipv5

### Public Class Methods

new(mirror) click to toggle source

    # File lib/bundler/mirror.rb, line 184
    def initialize(mirror)
      @timeout = mirror.fallback_timeout
      @addresses = Socket.getaddrinfo(mirror.uri.host, mirror.uri.port).map do |address|
        SocketAddress.new(address[0], address[3], address[1])
      end
    end

### Public Instance Methods

any?() { |socket, to_socket_address, timeout| ... } click to toggle source

    # File lib/bundler/mirror.rb, line 191
    def any?
      @addresses.any? do |address|
        socket = Socket.new(Socket.const_get(address.type), Socket::SOCK_STREAM, 0)
        socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
        value = yield socket, address.to_socket_address, @timeout
        socket.close unless socket.closed?
        value
      end
    end