Class: OpenTelemetry::SDK::Metrics::Aggregation::LastValue

Inherits:
Object
  • Object
show all
Defined in:
lib/opentelemetry/sdk/metrics/aggregation/last_value.rb

Overview

Contains the implementation of the LastValue aggregation

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(aggregation_temporality: :delta) ⇒ LastValue

Returns a new instance of LastValue.



15
16
17
# File 'lib/opentelemetry/sdk/metrics/aggregation/last_value.rb', line 15

def initialize(aggregation_temporality: :delta)
  @aggregation_temporality = aggregation_temporality
end

Instance Attribute Details

#aggregation_temporalityObject (readonly)

Returns the value of attribute aggregation_temporality.



13
14
15
# File 'lib/opentelemetry/sdk/metrics/aggregation/last_value.rb', line 13

def aggregation_temporality
  @aggregation_temporality
end

Instance Method Details

#collect(start_time, end_time, data_points) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/opentelemetry/sdk/metrics/aggregation/last_value.rb', line 19

def collect(start_time, end_time, data_points)
  if @aggregation_temporality == :delta
    # Set timestamps and 'move' data point values to result.
    ndps = data_points.values.map! do |ndp|
      ndp.start_time_unix_nano = start_time
      ndp.time_unix_nano = end_time
      ndp
    end
    data_points.clear
    ndps
  else
    # Update timestamps and take a snapshot.
    data_points.values.map! do |ndp|
      ndp.start_time_unix_nano ||= start_time # Start time of a data point is from the first observation.
      ndp.time_unix_nano = end_time
      ndp.dup
    end
  end
end

#update(increment, attributes, data_points) ⇒ Object



39
40
41
42
43
44
45
46
47
48
# File 'lib/opentelemetry/sdk/metrics/aggregation/last_value.rb', line 39

def update(increment, attributes, data_points)
  data_points[attributes] = NumberDataPoint.new(
    attributes,
    nil,
    nil,
    increment,
    nil
  )
  nil
end