On this page
class Bundler::Settings::TCPSocketProbe
Class
used for probing TCP availability for a given mirror.
Public Instance Methods
# File lib/bundler/mirror.rb, line 149
def replies?(mirror)
MirrorSockets.new(mirror).any? do |socket, address, timeout|
begin
socket.connect_nonblock(address)
rescue Errno::EINPROGRESS
wait_for_writtable_socket(socket, address, timeout)
rescue RuntimeError # Connection failed somehow, again
false
end
end
end
Private Instance Methods
# File lib/bundler/mirror.rb, line 171
def probe_writtable_socket(socket, address)
socket.connect_nonblock(address)
rescue Errno::EISCONN
true
rescue StandardError # Connection failed
false
end
# File lib/bundler/mirror.rb, line 163
def wait_for_writtable_socket(socket, address, timeout)
if IO.select(nil, [socket], nil, timeout)
probe_writtable_socket(socket, address)
else # TCP Handshake timed out, or there is something dropping packets
false
end
end
Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.