Skip to content

Commit a9287f0

Browse files
authored
Metrics refactor (#432)
1 parent 0b1a4dd commit a9287f0

File tree

61 files changed

+592
-413
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+592
-413
lines changed

Examples/Stable Metric Sample/main.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ basicConfiguration()
6969

7070
// creating a new meter & instrument
7171
let meter = OpenTelemetry.instance.stableMeterProvider?.meterBuilder(name: "MyMeter").build()
72-
var gaugeBuilder = meter!.gaugeBuilder(name: "Gauge")
73-
var gauge = gaugeBuilder.buildWithCallback({ ObservableDoubleMeasurement in
72+
var gaugeBuilder = meter!.gaugeBuilder(name: "Gauge").buildWithCallback({ ObservableDoubleMeasurement in
7473
ObservableDoubleMeasurement.record(value: 1.0, attributes: ["test": AttributeValue.bool(true)])
7574
})
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
//
2+
// Copyright The OpenTelemetry Authors
3+
// SPDX-License-Identifier: Apache-2.0
4+
//
5+
6+
import Foundation
7+
8+
9+
public class DefaultStableMeter : StableMeter {
10+
11+
internal init() {}
12+
13+
public func counterBuilder(name: String) -> LongCounterBuilder {
14+
NoopLongCounterBuilder()
15+
}
16+
17+
public func upDownCounterBuilder(name: String) -> LongUpDownCounterBuilder {
18+
NoopLongUpDownCounterBuilder()
19+
}
20+
21+
public func histogramBuilder(name: String) -> DoubleHistogramBuilder {
22+
NoopDoubleHistogramBuilder()
23+
}
24+
25+
public func gaugeBuilder(name: String) -> DoubleGaugeBuilder {
26+
NoopDoubleGaugeBuilder()
27+
}
28+
29+
private class NoopLongUpDownCounterBuilder : LongUpDownCounterBuilder {
30+
func ofDoubles() -> DoubleUpDownCounterBuilder {
31+
NoopDoubleUpDownCounterBuilder()
32+
}
33+
34+
func build() -> LongUpDownCounter {
35+
NoopLongUpDownCounter()
36+
}
37+
38+
func buildWithCallback(_ callback: @escaping (ObservableLongMeasurement) -> Void) -> ObservableLongUpDownCounter {
39+
NoopObservableLongUpDownCounter()
40+
}
41+
}
42+
43+
private class NoopDoubleHistogramBuilder : DoubleHistogramBuilder {
44+
func ofLongs() -> LongHistogramBuilder {
45+
NoopLongHistogramBuilder()
46+
}
47+
48+
func build() -> DoubleHistogram {
49+
NoopDoubleHistogram()
50+
}
51+
}
52+
53+
private class NoopDoubleGaugeBuilder : DoubleGaugeBuilder {
54+
func ofLongs() -> LongGaugeBuilder {
55+
NoopLongGaugeBuilder()
56+
}
57+
58+
func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement) -> Void) -> ObservableDoubleGauge {
59+
NoopObservableDoubleGauge()
60+
}
61+
}
62+
63+
private class NoopLongGaugeBuilder : LongGaugeBuilder {
64+
func buildWithCallback(_ callback: @escaping (ObservableLongMeasurement) -> Void) -> ObservableLongGauge {
65+
NoopObservableLongGauge()
66+
}
67+
}
68+
69+
private struct NoopObservableLongGauge : ObservableLongGauge {}
70+
71+
private struct NoopObservableDoubleGauge : ObservableDoubleGauge {}
72+
73+
private class NoopDoubleUpDownCounterBuilder : DoubleUpDownCounterBuilder {
74+
func build() -> DoubleUpDownCounter {
75+
NoopDoubleUpDownCounter()
76+
}
77+
78+
func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement) -> Void) -> ObservableDoubleUpDownCounter {
79+
NoopObservableDoubleUpDownCounter()
80+
}
81+
}
82+
83+
private struct NoopObservableDoubleUpDownCounter : ObservableDoubleUpDownCounter {}
84+
85+
private struct NoopDoubleUpDownCounter : DoubleUpDownCounter {
86+
mutating func add(value: Double) {}
87+
mutating func add(value: Double, attributes: [String : AttributeValue]) {}
88+
}
89+
90+
private class NoopLongUpDownCounter : LongUpDownCounter {
91+
func add(value: Int) {}
92+
func add(value: Int, attributes: [String : AttributeValue]) {}
93+
}
94+
95+
private class NoopLongHistogramBuilder : LongHistogramBuilder {
96+
func build() -> LongHistogram {
97+
NoopLongHistogram()
98+
}
99+
}
100+
101+
private struct NoopLongHistogram : LongHistogram {
102+
mutating func record(value: Int) {}
103+
mutating func record(value: Int, attributes: [String : AttributeValue]) {}
104+
}
105+
106+
private class NoopObservableLongUpDownCounter : ObservableLongUpDownCounter {}
107+
108+
private class NoopDoubleHistogram : DoubleHistogram {
109+
func record(value: Double) {}
110+
func record(value: Double, attributes: [String : AttributeValue]) {}
111+
}
112+
113+
private class NoopLongCounter : LongCounter {
114+
func add(value: Int) {}
115+
func add(value: Int, attribute: [String : AttributeValue]) {}
116+
}
117+
118+
private class NoopLongCounterBuilder : LongCounterBuilder {
119+
func ofDoubles() -> DoubleCounterBuilder {
120+
NoopDoubleCounterBuilder()
121+
}
122+
123+
func build() -> LongCounter {
124+
NoopLongCounter()
125+
}
126+
127+
func buildWithCallback(_ callback: @escaping (ObservableLongMeasurement) -> Void) -> ObservableLongCounter {
128+
NoopObservableLongCounter()
129+
}
130+
}
131+
132+
private class NoopDoubleCounterBuilder : DoubleCounterBuilder {
133+
func build() -> DoubleCounter {
134+
StableNoopDoubleCounter()
135+
}
136+
137+
func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement) -> Void) -> ObservableDoubleCounter {
138+
NoopObservableDoubleCounter()
139+
}
140+
}
141+
142+
private class NoopObservableLongCounter : ObservableLongCounter {}
143+
private class NoopObservableDoubleCounter: ObservableDoubleCounter {}
144+
145+
private class StableNoopDoubleCounterBuilder : DoubleCounterBuilder {
146+
func build() -> DoubleCounter {
147+
StableNoopDoubleCounter()
148+
}
149+
150+
func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement) -> Void) -> ObservableDoubleCounter {
151+
NoopObservableDoubleCounter()
152+
}
153+
}
154+
155+
private class StableNoopDoubleCounter : DoubleCounter {
156+
func add(value: Double) {}
157+
func add(value: Double, attributes: [String : AttributeValue]) {}
158+
}
159+
}
160+
161+
162+
163+
164+
165+
Lines changed: 39 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,41 @@
1-
////
2-
//// Copyright The OpenTelemetry Authors
3-
//// SPDX-License-Identifier: Apache-2.0
4-
////
51
//
6-
//import Foundation
2+
// Copyright The OpenTelemetry Authors
3+
// SPDX-License-Identifier: Apache-2.0
74
//
8-
//public class DefaultStableMeterProvider: StableMeterProvider {
9-
// static var proxyMeter = StableProxyMeter()
10-
// static var proxyMeterBuilder = ProxyMeterBuilder()
11-
// static var initialized = false
12-
//
13-
// class StableProxyMeter : StableMeter {
14-
// func counterBuilder(name: String) -> LongCounterBuilder {
15-
// }
16-
//
17-
// func upDownCounterBuilder(name: String) -> LongUpDownCounterBuilder {
18-
// }
19-
//
20-
// func histogramBuilder(name: String) -> DoubleHistogramBuilder {
21-
// }
22-
//
23-
// func gaugeBuilder(name: String) -> DoubleGaugeBuilder {
24-
// }
25-
// }
26-
//
27-
// class ProxyMeterBuilder : MeterBuilder {
28-
// func setSchemaUrl(schemaUrl: String) -> Self {
29-
// return self
30-
// }
31-
//
32-
// func setInstrumentationVersion(instrumentationVersion: String) -> Self {
33-
// return self
34-
// }
35-
//
36-
// func build() -> StableMeter {
37-
// return DefaultStableMeterProvider.proxyMeter
38-
// }
39-
//
40-
//
41-
// init() {}
42-
//
43-
// public static func setDefault(meterFactory: StableMeterProvider) {
44-
// guard !initialized else {
45-
// return
46-
// }
47-
// instance = meterFactory
48-
// proxyMeter.updateMeter(realMeter: meterFactory.get(name: ""))
49-
// initialized = true
50-
// }
51-
//
52-
// public func get(name: String) -> StableMeter {
53-
// return Self.initialized ? Self.instance.get(name: name) : Self.proxyMeter
54-
// }
55-
//
56-
// public func meterBuilder(name: String) -> MeterBuilder {
57-
// return Self.initialized ? self.instance.meterBuilder(name: name) : return Self.proxyMeterBuilder
58-
//
59-
// }
60-
//
61-
// public static var instance : StableMeterProvider = DefaultStableMeterProvider()
62-
//}
5+
6+
import Foundation
7+
8+
public class DefaultStableMeterProvider: StableMeterProvider {
9+
static let noopMeterBuilder = NoopMeterBuilder()
10+
11+
public static func noop() -> MeterBuilder {
12+
noopMeterBuilder
13+
}
14+
15+
public func get(name: String) -> StableMeter {
16+
DefaultStableMeter()
17+
}
18+
19+
public func meterBuilder(name: String) -> MeterBuilder {
20+
Self.noop()
21+
}
22+
23+
class NoopMeterBuilder : MeterBuilder {
24+
static let noopMeter = DefaultStableMeter()
25+
26+
func setSchemaUrl(schemaUrl: String) -> Self {
27+
self
28+
}
29+
30+
func setInstrumentationVersion(instrumentationVersion: String) -> Self {
31+
self
32+
}
33+
34+
func build() -> StableMeter {
35+
Self.noopMeter
36+
}
37+
38+
}
39+
40+
public static var instance : StableMeterProvider = DefaultStableMeterProvider()
41+
}

Sources/OpenTelemetryApi/Metrics/Stable/DoubleCounter.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,5 @@ import Foundation
77

88
public protocol DoubleCounter {
99
mutating func add(value: Double)
10-
1110
mutating func add(value: Double, attributes: [String: AttributeValue])
1211
}

Sources/OpenTelemetryApi/Metrics/Stable/DoubleCounterBuilder.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
import Foundation
77

8-
public protocol DoubleCounterBuilder {
8+
public protocol DoubleCounterBuilder : AnyObject {
99
func build() -> DoubleCounter
1010

11-
mutating func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement) -> Void) -> ObservableDoubleCounter
11+
func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement) -> Void) -> ObservableDoubleCounter
1212
}

Sources/OpenTelemetryApi/Metrics/Stable/DoubleGaugeBuilder.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import Foundation
77

8-
public protocol DoubleGaugeBuilder {
8+
public protocol DoubleGaugeBuilder : AnyObject {
99
func ofLongs() -> LongGaugeBuilder
10-
mutating func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement)->Void) -> ObservableDoubleGauge
10+
func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement)->Void) -> ObservableDoubleGauge
1111
}

Sources/OpenTelemetryApi/Metrics/Stable/DoubleHistogramBuilder.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import Foundation
77

8-
public protocol DoubleHistogramBuilder {
8+
public protocol DoubleHistogramBuilder : AnyObject {
99
func ofLongs() -> LongHistogramBuilder
1010

1111
func build() -> DoubleHistogram

Sources/OpenTelemetryApi/Metrics/Stable/DoubleUpDownCounterBuilder.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
import Foundation
77

8-
public protocol DoubleUpDownCounterBuilder {
8+
public protocol DoubleUpDownCounterBuilder : AnyObject {
99
func build() -> DoubleUpDownCounter
10-
mutating func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement) -> Void) -> ObservableDoubleUpDownCounter
10+
func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement) -> Void) -> ObservableDoubleUpDownCounter
1111

1212
}
1313

Sources/OpenTelemetryApi/Metrics/Stable/Instruments/Gauge/ObservableGauge.swift

Lines changed: 0 additions & 16 deletions
This file was deleted.

Sources/OpenTelemetryApi/Metrics/Stable/Instruments/Histogram/Histogram.swift

Lines changed: 0 additions & 22 deletions
This file was deleted.

0 commit comments

Comments
 (0)