123456789_123456789_123456789_123456789_123456789_

Class: Bundler::MirrorSockets

Relationships & Source Files
Inherits: Object
Defined in: lib/bundler/mirror.rb

Overview

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

Class Method Summary

Instance Attribute Summary

Constructor Details

.new(mirror) ⇒ MirrorSockets

[ GitHub ]

  
# File 'lib/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

Instance Attribute Details

#any?Boolean (readonly)

[ GitHub ]

  
# File 'lib/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