Sha256: facc940708fd97c0508c4311d113c3c8c252085c3832f9aba9ea8eb45dbb30ea

Contents?: true

Size: 1.01 KB

Versions: 17

Compression:

Stored size: 1.01 KB

Contents

module Watir
  module Wait
    class Timer

      attr_reader :remaining_time

      def initialize(timeout: nil)
        @end_time = current_time + timeout if timeout
        @remaining_time = @end_time - current_time if @end_time
      end

      #
      # Executes given block until it returns true or exceeds timeout.
      # @param [Integer] timeout
      # @yield block
      # @api private
      #

      def wait(timeout, &block)
        end_time = @end_time || current_time + timeout
        loop do
          yield(block)
          @remaining_time = end_time - current_time
          break if @remaining_time < 0
        end
      end

      def reset!
        @end_time = nil
      end

      def locked?
        !@end_time.nil?
      end

      private

      if defined?(Process::CLOCK_MONOTONIC)
        def current_time
          Process.clock_gettime(Process::CLOCK_MONOTONIC)
        end
      else
        def current_time
          ::Time.now.to_f
        end
      end

    end # Timer
  end # Wait
end # Watir

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
watir-6.8.1 lib/watir/wait/timer.rb
watir-6.8.0 lib/watir/wait/timer.rb
watir-6.7.3 lib/watir/wait/timer.rb
watir-6.7.2 lib/watir/wait/timer.rb
watir-6.7.1 lib/watir/wait/timer.rb
watir-6.7.0 lib/watir/wait/timer.rb
watir-6.6.3 lib/watir/wait/timer.rb
watir-6.6.2 lib/watir/wait/timer.rb
watir-6.6.1 lib/watir/wait/timer.rb
watir-6.6.0 lib/watir/wait/timer.rb
watir-6.5.0 lib/watir/wait/timer.rb
watir-6.4.3 lib/watir/wait/timer.rb
watir-6.4.2 lib/watir/wait/timer.rb
watir-6.4.1 lib/watir/wait/timer.rb
watir-6.4.0 lib/watir/wait/timer.rb
watir-6.4.0.rc2 lib/watir/wait/timer.rb
watir-6.4.0.rc1 lib/watir/wait/timer.rb