Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Metrics refactor #432

Merged
merged 4 commits into from
Jul 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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