This repository was archived by the owner on Jul 31, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathview_data.rb
70 lines (58 loc) · 1.54 KB
/
view_data.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# frozen_string_literal: true
module OpenCensus
module Stats
# ViewData is a container to store stats.
class ViewData
# @return [View]
attr_reader :view
# @return [Time, nil]
attr_reader :start_time
# @return [Time, nil]
attr_reader :end_time
# @return [Hash<Array<String>>,AggregationData] Recorded stats data
# against view columns.
attr_reader :data
# @private
# Create instance of view
#
# @param [View] view
# @param [Time] start_time
# @param [Time] end_time
def initialize view, start_time: nil, end_time: nil
@view = view
@start_time = start_time
@end_time = end_time
@data = {}
end
# Set start time.
def start
@start_time = Time.now.utc
end
# Set stop time.
def stop
@end_time = Time.now.utc
end
# Record a measurement.
#
# @param [Measurement] measurement
# @param [Hash<String,String>] attachments
def record measurement, attachments: nil
tag_values = @view.columns.map do |column|
measurement.tags[column].value if measurement.tags[column]
end
unless @data.key? tag_values
@data[tag_values] = @view.aggregation.create_aggregation_data
end
@data[tag_values].add(
measurement.value,
measurement.time,
attachments: attachments
)
end
# Clear recorded data
def clear
data.clear
end
end
end
end