Sha256: e352b25c19af6b9ad79d75fff182bca34a8d1711fe42320e53b69711d95429a2

Contents?: true

Size: 816 Bytes

Versions: 42

Compression:

Stored size: 816 Bytes

Contents

# frozen_string_literal: true

module Nonnative
  class Port
    def initialize(process)
      @process = process
      @timeout = Nonnative::Timeout.new(process.timeout)
    end

    def open?
      timeout.perform do
        open_socket
        true
      rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
        sleep_interval
        retry
      end
    end

    def closed?
      timeout.perform do
        open_socket
        raise Nonnative::Error
      rescue Nonnative::Error
        sleep_interval
        retry
      rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Errno::ECONNRESET
        true
      end
    end

    private

    attr_reader :process, :timeout

    def open_socket
      TCPSocket.new(process.host, process.port).close
    end

    def sleep_interval
      sleep 0.01
    end
  end
end

Version data entries

42 entries across 42 versions & 1 rubygems

Version Path
nonnative-1.93.0 lib/nonnative/port.rb
nonnative-1.92.0 lib/nonnative/port.rb
nonnative-1.91.0 lib/nonnative/port.rb
nonnative-1.90.1 lib/nonnative/port.rb
nonnative-1.90.0 lib/nonnative/port.rb
nonnative-1.89.0 lib/nonnative/port.rb
nonnative-1.88.0 lib/nonnative/port.rb
nonnative-1.87.0 lib/nonnative/port.rb
nonnative-1.86.0 lib/nonnative/port.rb
nonnative-1.85.1 lib/nonnative/port.rb
nonnative-1.85.0 lib/nonnative/port.rb
nonnative-1.84.1 lib/nonnative/port.rb
nonnative-1.84.0 lib/nonnative/port.rb
nonnative-1.83.0 lib/nonnative/port.rb
nonnative-1.82.0 lib/nonnative/port.rb
nonnative-1.81.0 lib/nonnative/port.rb
nonnative-1.80.0 lib/nonnative/port.rb
nonnative-1.79.0 lib/nonnative/port.rb
nonnative-1.78.0 lib/nonnative/port.rb
nonnative-1.77.0 lib/nonnative/port.rb