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
- .new(mirror) ⇒ MirrorSockets constructor
Instance Attribute Summary
- #any? ⇒ Boolean readonly
Constructor Details
.new(mirror) ⇒ MirrorSockets
# 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