Sha256: 57481ed60a04c31c5ab873e15d15f39e44b93beec986344142fc4b0f705342fa

Contents?: true

Size: 942 Bytes

Versions: 8

Compression:

Stored size: 942 Bytes

Contents

module Skylight
  module Util
    # A more precise clock
    class Clock
      def self.use_native!
        class_eval do
          def tick
            native_hrtime
          end
        end
      end

      # rubocop:disable Lint/DuplicateMethods
      def tick
        now = Time.now
        now.to_i * 1_000_000_000 + now.usec * 1_000
      end
      # rubocop:enable Lint/DuplicateMethods

      # TODO: rename to secs
      def absolute_secs
        Time.now.to_i
      end

      # TODO: remove
      def nanos
        tick
      end

      # TODO: remove
      def secs
        nanos / 1_000_000_000
      end

      class << self
        def absolute_secs
          default.absolute_secs
        end

        def nanos
          default.nanos
        end

        def secs
          default.secs
        end

        def default
          @default ||= Clock.new
        end

        attr_writer :default
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
skylight-5.1.0.beta lib/skylight/util/clock.rb
skylight-5.0.1 lib/skylight/util/clock.rb
skylight-5.0.0 lib/skylight/util/clock.rb
skylight-5.0.0.beta5 lib/skylight/util/clock.rb
skylight-5.0.0.beta4 lib/skylight/util/clock.rb
skylight-5.0.0.beta3 lib/skylight/util/clock.rb
skylight-5.0.0.beta2 lib/skylight/util/clock.rb
skylight-5.0.0.beta lib/skylight/util/clock.rb