@@ -23,29 +23,33 @@ public struct StableMetricData: Equatable {
2323 public private( set) var description : String
2424 public private( set) var unit : String
2525 public private( set) var type : MetricDataType
26+ public private( set) var isMonotonic : Bool
2627 public private( set) var data : Data
2728
28- public static let empty = StableMetricData ( resource: Resource . empty, instrumentationScopeInfo: InstrumentationScopeInfo ( ) , name: " " , description: " " , unit: " " , type: . Summary, data: StableMetricData . Data ( points: [ PointData] ( ) ) )
29+ public static let empty = StableMetricData ( resource: Resource . empty, instrumentationScopeInfo: InstrumentationScopeInfo ( ) , name: " " , description: " " , unit: " " , type: . Summary, isMonotonic : false , data: StableMetricData . Data ( aggregationTemporality : . cumulative , points: [ PointData] ( ) ) )
2930
3031 public class Data : Equatable {
3132 public private( set) var points : [ PointData ]
33+ public private( set) var aggregationTemporality : AggregationTemporality
3234
33- internal init ( points: [ PointData ] ) {
35+ internal init ( aggregationTemporality: AggregationTemporality , points: [ PointData ] ) {
36+ self . aggregationTemporality = aggregationTemporality
3437 self . points = points
3538 }
3639
3740 public static func == ( lhs: StableMetricData . Data , rhs: StableMetricData . Data ) -> Bool {
38- return lhs. points == rhs. points
41+ return lhs. points == rhs. points && lhs . aggregationTemporality == rhs . aggregationTemporality
3942 }
4043 }
4144
42- internal init ( resource: Resource , instrumentationScopeInfo: InstrumentationScopeInfo , name: String , description: String , unit: String , type: MetricDataType , data: StableMetricData . Data ) {
45+ internal init ( resource: Resource , instrumentationScopeInfo: InstrumentationScopeInfo , name: String , description: String , unit: String , type: MetricDataType , isMonotonic : Bool , data: StableMetricData . Data ) {
4346 self . resource = resource
4447 self . instrumentationScopeInfo = instrumentationScopeInfo
4548 self . name = name
4649 self . description = description
4750 self . unit = unit
4851 self . type = type
52+ self . isMonotonic = isMonotonic
4953 self . data = data
5054 }
5155
@@ -56,33 +60,34 @@ public struct StableMetricData: Equatable {
5660 lhs. description == rhs. description &&
5761 lhs. unit == rhs. unit &&
5862 lhs. type == rhs. type &&
59- lhs. data. points == rhs. data. points
63+ lhs. isMonotonic == rhs. isMonotonic &&
64+ lhs. data == rhs. data
6065 }
6166}
6267
6368extension StableMetricData {
6469 static func createExponentialHistogram( resource: Resource , instrumentationScopeInfo: InstrumentationScopeInfo , name: String , description: String , unit: String , data: StableExponentialHistogramData ) -> StableMetricData {
65- StableMetricData ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: name, description: description, unit: unit, type: . ExponentialHistogram, data: data)
70+ StableMetricData ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: name, description: description, unit: unit, type: . ExponentialHistogram, isMonotonic : false , data: data)
6671 }
6772
6873 static func createDoubleGauge( resource: Resource , instrumentationScopeInfo: InstrumentationScopeInfo , name: String , description: String , unit: String , data: StableGaugeData ) -> StableMetricData {
69- StableMetricData ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: name, description: description, unit: unit, type: . DoubleGauge, data: data)
74+ StableMetricData ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: name, description: description, unit: unit, type: . DoubleGauge, isMonotonic : false , data: data)
7075 }
7176
7277 static func createLongGauge( resource: Resource , instrumentationScopeInfo: InstrumentationScopeInfo , name: String , description: String , unit: String , data: StableGaugeData ) -> StableMetricData {
73- StableMetricData ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: name, description: description, unit: unit, type: . LongGauge, data: data)
78+ StableMetricData ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: name, description: description, unit: unit, type: . LongGauge, isMonotonic : false , data: data)
7479 }
7580
76- static func createDoubleSum( resource: Resource , instrumentationScopeInfo: InstrumentationScopeInfo , name: String , description: String , unit: String , data: StableSumData ) -> StableMetricData {
77- StableMetricData ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: name, description: description, unit: unit, type: . DoubleSum, data: data)
81+ static func createDoubleSum( resource: Resource , instrumentationScopeInfo: InstrumentationScopeInfo , name: String , description: String , unit: String , isMonotonic : Bool , data: StableSumData ) -> StableMetricData {
82+ StableMetricData ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: name, description: description, unit: unit, type: . DoubleSum, isMonotonic : isMonotonic , data: data)
7883 }
7984
80- static func createLongSum( resource: Resource , instrumentationScopeInfo: InstrumentationScopeInfo , name: String , description: String , unit: String , data: StableSumData ) -> StableMetricData {
81- StableMetricData ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: name, description: description, unit: unit, type: . LongSum, data: data)
85+ static func createLongSum( resource: Resource , instrumentationScopeInfo: InstrumentationScopeInfo , name: String , description: String , unit: String , isMonotonic : Bool , data: StableSumData ) -> StableMetricData {
86+ StableMetricData ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: name, description: description, unit: unit, type: . LongSum, isMonotonic : isMonotonic , data: data)
8287 }
8388
8489 static func createHistogram( resource: Resource , instrumentationScopeInfo: InstrumentationScopeInfo , name: String , description: String , unit: String , data: StableHistogramData ) -> StableMetricData {
85- StableMetricData ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: name, description: description, unit: unit, type: . Histogram, data: data)
90+ StableMetricData ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: name, description: description, unit: unit, type: . Histogram, isMonotonic : false , data: data)
8691 }
8792
8893 func isEmpty( ) -> Bool {
@@ -99,41 +104,31 @@ extension StableMetricData {
99104}
100105
101106public class StableHistogramData : StableMetricData . Data {
102- public private( set) var aggregationTemporality : AggregationTemporality
103107 init ( aggregationTemporality: AggregationTemporality , points: [ HistogramPointData ] ) {
104- self . aggregationTemporality = aggregationTemporality
105- super. init ( points: points)
108+ super. init ( aggregationTemporality: aggregationTemporality, points: points)
106109 }
107110}
108111
109112public class StableExponentialHistogramData : StableMetricData . Data {
110- public private( set) var aggregationTemporality : AggregationTemporality
111- init ( aggregationTemporality: AggregationTemporality , points: [ PointData ] ) {
112- self . aggregationTemporality = aggregationTemporality
113- super. init ( points: points)
113+ override init ( aggregationTemporality: AggregationTemporality , points: [ PointData ] ) {
114+ super. init ( aggregationTemporality: aggregationTemporality, points: points)
114115 }
115116}
116117
117118public class StableGaugeData : StableMetricData . Data {
118- public private( set) var aggregationTemporality : AggregationTemporality
119- init ( aggregationTemporality: AggregationTemporality , points: [ PointData ] ) {
120- self . aggregationTemporality = aggregationTemporality
121- super. init ( points: points)
119+ override init ( aggregationTemporality: AggregationTemporality , points: [ PointData ] ) {
120+ super. init ( aggregationTemporality: aggregationTemporality, points: points)
122121 }
123122}
124123
125124public class StableSumData : StableMetricData . Data {
126- public private( set) var aggregationTemporality : AggregationTemporality
127- init ( aggregationTemporality: AggregationTemporality , points: [ PointData ] ) {
128- self . aggregationTemporality = aggregationTemporality
129- super. init ( points: points)
125+ override init ( aggregationTemporality: AggregationTemporality , points: [ PointData ] ) {
126+ super. init ( aggregationTemporality: aggregationTemporality, points: points)
130127 }
131128}
132129
133130public class StableSummaryData : StableMetricData . Data {
134- public private( set) var aggregationTemporality : AggregationTemporality
135- init ( aggregationTemporality: AggregationTemporality , points: [ PointData ] ) {
136- self . aggregationTemporality = aggregationTemporality
137- super. init ( points: points)
131+ override init ( aggregationTemporality: AggregationTemporality , points: [ PointData ] ) {
132+ super. init ( aggregationTemporality: aggregationTemporality, points: points)
138133 }
139134}
0 commit comments