# class Bundler::Settings::TCPSocketProbe

`Class` used for probing TCP availability for a given mirror.

### Public Instance Methods

replies?(mirror) click to toggle source

    # 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

probe_writtable_socket(socket, address) click to toggle source

    # 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

wait_for_writtable_socket(socket, address, timeout) click to toggle source

    # 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