Sha256: d4b4d32bf6bcb7bfca1327d36d314b907bd60fafb1d7c75cecf2e2356455045d

Contents?: true

Size: 1.14 KB

Versions: 14

Compression:

Stored size: 1.14 KB

Contents

require 'determinator/tracking/determination'
require 'determinator/tracking/request'

module Determinator
  module Tracking
    class Tracker
      attr_reader :type, :determinations

      def initialize(type)
        @determinations = Hash.new(0)
        @type = type
        @monotonic_start = now
        @start = Time.now
      end

      def track(id, guid, feature, determination)
        determinations[
          Determinator::Tracking::Determination.new(
            id: id,
            guid: guid,
            feature_id: feature.identifier,
            determination: determination
          )
        ] += 1
      end

      def finish!(endpoint:, error:, **attributes)
        request_time = now - @monotonic_start
        Determinator::Tracking::Request.new(
          start: @start,
          type: type,
          time: request_time,
          endpoint: endpoint,
          error: error,
          attributes: attributes,
          determinations: determinations,
          context: Determinator::Tracking.context
        )
      end

      private

      def now
        Process.clock_gettime(Process::CLOCK_MONOTONIC)
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
determinator-2.9.3 lib/determinator/tracking/tracker.rb
determinator-2.9.2 lib/determinator/tracking/tracker.rb
determinator-2.9.1 lib/determinator/tracking/tracker.rb
determinator-2.9.0 lib/determinator/tracking/tracker.rb
determinator-2.8.0 lib/determinator/tracking/tracker.rb
determinator-2.7.1 lib/determinator/tracking/tracker.rb
determinator-2.7.0 lib/determinator/tracking/tracker.rb
determinator-2.6.0 lib/determinator/tracking/tracker.rb
determinator-2.5.4 lib/determinator/tracking/tracker.rb
determinator-2.5.3 lib/determinator/tracking/tracker.rb
determinator-2.5.2 lib/determinator/tracking/tracker.rb
determinator-2.5.1 lib/determinator/tracking/tracker.rb
determinator-2.5.0 lib/determinator/tracking/tracker.rb
determinator-2.4.4 lib/determinator/tracking/tracker.rb