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 bundler/mirror.rb, line 186 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 bundler/mirror.rb, line 193 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