Class: Bundler::Settings::TCPSocketProbe
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/bundler/mirror.rb |
Overview
Class used for probing TCP availability for a given mirror.
Instance Method Summary
Instance Method Details
#probe_writtable_socket(socket, address) (private)
[ GitHub ]# 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
#replies?(mirror) ⇒ Boolean
# 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
#wait_for_writtable_socket(socket, address, timeout) (private)
[ GitHub ]# 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