class Bundler::Settings::TCPSocketProbe
Class used for probing TCP availability for a given mirror.
Public Instance Methods
replies?(mirror)
click to toggle source
# File 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
probe_writtable_socket(socket, address)
click to toggle source
# File 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
wait_for_writtable_socket(socket, address, timeout)
click to toggle source
# File 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