Sha256: 0e3788f921724555287b32917e03a67a07d095064f3db582f17ed1f2dddcad17

Contents?: true

Size: 801 Bytes

Versions: 4

Compression:

Stored size: 801 Bytes

Contents

require 'heimdall_apm/metric_name'
require 'heimdall_apm/metric_stats'

module HeimdallApm
  module Visitors
    # Extract metrics for a given transaction
    #
    class RequestMetricsVisitor
      attr_reader :metrics

      def initialize(vault, transaction)
        @transaction = transaction
        @vault   = vault
        @metrics = {}
      end

      def visit(segment)
        name = ::HeimdallApm::MetricName.new(segment.type, segment.name)
        @metrics[name] ||= ::HeimdallApm::MetricStats.new

        stat = @metrics[name]
        stat.update(segment.total_call_time, segment.total_exclusive_time)
      end

      def store_in_vault
        timestamp = @transaction.root_segment.stop_time
        @vault.store_transaction_metrics(@transaction, metrics)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
heimdall_apm-0.1.3 lib/heimdall_apm/visitors/request_metrics_visitor.rb
heimdall_apm-0.1.2 lib/heimdall_apm/visitors/request_metrics_visitor.rb
heimdall_apm-0.1.1 lib/heimdall_apm/visitors/request_metrics_visitor.rb
heimdall_apm-0.1.0 lib/heimdall_apm/visitors/request_metrics_visitor.rb