class Bundler::Settings::TCPSocketProbe - bundler: Ruby Standard Library Documentation

# 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|
        socket.connect_nonblock(address)
      rescue Errno::EINPROGRESS
        wait_for_writtable_socket(socket, address, timeout)
      rescue RuntimeError # Connection failed somehow, again
        false
      end
    end

### Private Instance Methods

probe_writtable_socket(socket, address) click to toggle source

    # File bundler/mirror.rb, line 169
    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 161
    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