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 188 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 195 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