Sha256: f8f65695fbd99c96403721d729416e4a720202cb12ae1c966f70cbd362a70329

Contents?: true

Size: 813 Bytes

Versions: 51

Compression:

Stored size: 813 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('0.0.0.0', process.port).close
    end

    def sleep_interval
      sleep 0.01
    end
  end
end

Version data entries

51 entries across 51 versions & 1 rubygems

Version Path
nonnative-1.37.0 lib/nonnative/port.rb
nonnative-1.36.0 lib/nonnative/port.rb
nonnative-1.34.0 lib/nonnative/port.rb
nonnative-1.31.0 lib/nonnative/port.rb
nonnative-1.30.0 lib/nonnative/port.rb
nonnative-1.29.0 lib/nonnative/port.rb
nonnative-1.28.0 lib/nonnative/port.rb
nonnative-1.27.0 lib/nonnative/port.rb
nonnative-1.26.0 lib/nonnative/port.rb
nonnative-1.25.0 lib/nonnative/port.rb
nonnative-1.24.0 lib/nonnative/port.rb
nonnative-1.23.0 lib/nonnative/port.rb
nonnative-1.22.0 lib/nonnative/port.rb
nonnative-1.21.0 lib/nonnative/port.rb
nonnative-1.20.0 lib/nonnative/port.rb
nonnative-1.19.0 lib/nonnative/port.rb
nonnative-1.18.0 lib/nonnative/port.rb
nonnative-1.17.0 lib/nonnative/port.rb
nonnative-1.16.0 lib/nonnative/port.rb
nonnative-1.15.0 lib/nonnative/port.rb