Skip to content

Commit

Permalink
Metrics refactor (#432)
Browse files Browse the repository at this point in the history
  • Loading branch information
bryce-b authored Jul 6, 2023
1 parent 0b1a4dd commit a9287f0
Show file tree
Hide file tree
Showing 61 changed files with 592 additions and 413 deletions.
3 changes: 1 addition & 2 deletions Examples/Stable Metric Sample/main.swift
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ basicConfiguration()

// creating a new meter & instrument
let meter = OpenTelemetry.instance.stableMeterProvider?.meterBuilder(name: "MyMeter").build()
var gaugeBuilder = meter!.gaugeBuilder(name: "Gauge")
var gauge = gaugeBuilder.buildWithCallback({ ObservableDoubleMeasurement in
var gaugeBuilder = meter!.gaugeBuilder(name: "Gauge").buildWithCallback({ ObservableDoubleMeasurement in
ObservableDoubleMeasurement.record(value: 1.0, attributes: ["test": AttributeValue.bool(true)])
})
165 changes: 165 additions & 0 deletions Sources/OpenTelemetryApi/Metrics/Stable/DefaultStableMeter.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
//
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
//

import Foundation


public class DefaultStableMeter : StableMeter {

internal init() {}

public func counterBuilder(name: String) -> LongCounterBuilder {
NoopLongCounterBuilder()
}

public func upDownCounterBuilder(name: String) -> LongUpDownCounterBuilder {
NoopLongUpDownCounterBuilder()
}

public func histogramBuilder(name: String) -> DoubleHistogramBuilder {
NoopDoubleHistogramBuilder()
}

public func gaugeBuilder(name: String) -> DoubleGaugeBuilder {
NoopDoubleGaugeBuilder()
}

private class NoopLongUpDownCounterBuilder : LongUpDownCounterBuilder {
func ofDoubles() -> DoubleUpDownCounterBuilder {
NoopDoubleUpDownCounterBuilder()
}

func build() -> LongUpDownCounter {
NoopLongUpDownCounter()
}

func buildWithCallback(_ callback: @escaping (ObservableLongMeasurement) -> Void) -> ObservableLongUpDownCounter {
NoopObservableLongUpDownCounter()
}
}

private class NoopDoubleHistogramBuilder : DoubleHistogramBuilder {
func ofLongs() -> LongHistogramBuilder {
NoopLongHistogramBuilder()
}

func build() -> DoubleHistogram {
NoopDoubleHistogram()
}
}

private class NoopDoubleGaugeBuilder : DoubleGaugeBuilder {
func ofLongs() -> LongGaugeBuilder {
NoopLongGaugeBuilder()
}

func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement) -> Void) -> ObservableDoubleGauge {
NoopObservableDoubleGauge()
}
}

private class NoopLongGaugeBuilder : LongGaugeBuilder {
func buildWithCallback(_ callback: @escaping (ObservableLongMeasurement) -> Void) -> ObservableLongGauge {
NoopObservableLongGauge()
}
}

private struct NoopObservableLongGauge : ObservableLongGauge {}

private struct NoopObservableDoubleGauge : ObservableDoubleGauge {}

private class NoopDoubleUpDownCounterBuilder : DoubleUpDownCounterBuilder {
func build() -> DoubleUpDownCounter {
NoopDoubleUpDownCounter()
}

func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement) -> Void) -> ObservableDoubleUpDownCounter {
NoopObservableDoubleUpDownCounter()
}
}

private struct NoopObservableDoubleUpDownCounter : ObservableDoubleUpDownCounter {}

private struct NoopDoubleUpDownCounter : DoubleUpDownCounter {
mutating func add(value: Double) {}
mutating func add(value: Double, attributes: [String : AttributeValue]) {}
}

private class NoopLongUpDownCounter : LongUpDownCounter {
func add(value: Int) {}
func add(value: Int, attributes: [String : AttributeValue]) {}
}

private class NoopLongHistogramBuilder : LongHistogramBuilder {
func build() -> LongHistogram {
NoopLongHistogram()
}
}

private struct NoopLongHistogram : LongHistogram {
mutating func record(value: Int) {}
mutating func record(value: Int, attributes: [String : AttributeValue]) {}
}

private class NoopObservableLongUpDownCounter : ObservableLongUpDownCounter {}

private class NoopDoubleHistogram : DoubleHistogram {
func record(value: Double) {}
func record(value: Double, attributes: [String : AttributeValue]) {}
}

private class NoopLongCounter : LongCounter {
func add(value: Int) {}
func add(value: Int, attribute: [String : AttributeValue]) {}
}

private class NoopLongCounterBuilder : LongCounterBuilder {
func ofDoubles() -> DoubleCounterBuilder {
NoopDoubleCounterBuilder()
}

func build() -> LongCounter {
NoopLongCounter()
}

func buildWithCallback(_ callback: @escaping (ObservableLongMeasurement) -> Void) -> ObservableLongCounter {
NoopObservableLongCounter()
}
}

private class NoopDoubleCounterBuilder : DoubleCounterBuilder {
func build() -> DoubleCounter {
StableNoopDoubleCounter()
}

func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement) -> Void) -> ObservableDoubleCounter {
NoopObservableDoubleCounter()
}
}

private class NoopObservableLongCounter : ObservableLongCounter {}
private class NoopObservableDoubleCounter: ObservableDoubleCounter {}

private class StableNoopDoubleCounterBuilder : DoubleCounterBuilder {
func build() -> DoubleCounter {
StableNoopDoubleCounter()
}

func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement) -> Void) -> ObservableDoubleCounter {
NoopObservableDoubleCounter()
}
}

private class StableNoopDoubleCounter : DoubleCounter {
func add(value: Double) {}
func add(value: Double, attributes: [String : AttributeValue]) {}
}
}






Original file line number Diff line number Diff line change
@@ -1,62 +1,41 @@
////
//// Copyright The OpenTelemetry Authors
//// SPDX-License-Identifier: Apache-2.0
////
//
//import Foundation
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
//
//public class DefaultStableMeterProvider: StableMeterProvider {
// static var proxyMeter = StableProxyMeter()
// static var proxyMeterBuilder = ProxyMeterBuilder()
// static var initialized = false
//
// class StableProxyMeter : StableMeter {
// func counterBuilder(name: String) -> LongCounterBuilder {
// }
//
// func upDownCounterBuilder(name: String) -> LongUpDownCounterBuilder {
// }
//
// func histogramBuilder(name: String) -> DoubleHistogramBuilder {
// }
//
// func gaugeBuilder(name: String) -> DoubleGaugeBuilder {
// }
// }
//
// class ProxyMeterBuilder : MeterBuilder {
// func setSchemaUrl(schemaUrl: String) -> Self {
// return self
// }
//
// func setInstrumentationVersion(instrumentationVersion: String) -> Self {
// return self
// }
//
// func build() -> StableMeter {
// return DefaultStableMeterProvider.proxyMeter
// }
//
//
// init() {}
//
// public static func setDefault(meterFactory: StableMeterProvider) {
// guard !initialized else {
// return
// }
// instance = meterFactory
// proxyMeter.updateMeter(realMeter: meterFactory.get(name: ""))
// initialized = true
// }
//
// public func get(name: String) -> StableMeter {
// return Self.initialized ? Self.instance.get(name: name) : Self.proxyMeter
// }
//
// public func meterBuilder(name: String) -> MeterBuilder {
// return Self.initialized ? self.instance.meterBuilder(name: name) : return Self.proxyMeterBuilder
//
// }
//
// public static var instance : StableMeterProvider = DefaultStableMeterProvider()
//}

import Foundation

public class DefaultStableMeterProvider: StableMeterProvider {
static let noopMeterBuilder = NoopMeterBuilder()

public static func noop() -> MeterBuilder {
noopMeterBuilder
}

public func get(name: String) -> StableMeter {
DefaultStableMeter()
}

public func meterBuilder(name: String) -> MeterBuilder {
Self.noop()
}

class NoopMeterBuilder : MeterBuilder {
static let noopMeter = DefaultStableMeter()

func setSchemaUrl(schemaUrl: String) -> Self {
self
}

func setInstrumentationVersion(instrumentationVersion: String) -> Self {
self
}

func build() -> StableMeter {
Self.noopMeter
}

}

public static var instance : StableMeterProvider = DefaultStableMeterProvider()
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,5 @@ import Foundation

public protocol DoubleCounter {
mutating func add(value: Double)

mutating func add(value: Double, attributes: [String: AttributeValue])
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

import Foundation

public protocol DoubleCounterBuilder {
public protocol DoubleCounterBuilder : AnyObject {
func build() -> DoubleCounter

mutating func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement) -> Void) -> ObservableDoubleCounter
func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement) -> Void) -> ObservableDoubleCounter
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import Foundation

public protocol DoubleGaugeBuilder {
public protocol DoubleGaugeBuilder : AnyObject {
func ofLongs() -> LongGaugeBuilder
mutating func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement)->Void) -> ObservableDoubleGauge
func buildWithCallback(_ callback: @escaping (ObservableDoubleMeasurement)->Void) -> ObservableDoubleGauge
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import Foundation

public protocol DoubleHistogramBuilder {
public protocol DoubleHistogramBuilder : AnyObject {
func ofLongs() -> LongHistogramBuilder

func build() -> DoubleHistogram
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@

import Foundation

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

}

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Loading

0 comments on commit a9287f0

Please sign in to comment.