Skip to content

Commit 32b1570

Browse files
committed
All thread safe? 🤔
1 parent a8e35e9 commit 32b1570

File tree

2 files changed

+37
-37
lines changed

2 files changed

+37
-37
lines changed

Sources/Prometheus/MetricTypes/Counter.swift

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public class Counter<NumType: Numeric, Labels: MetricLabels>: Metric, Prometheus
4949
output.append("# HELP \(self.name) \(help)")
5050
}
5151
output.append("# TYPE \(self.name) \(self._type)")
52-
52+
5353
output.append("\(self.name) \(self.value)")
5454

5555
self.metrics.forEach { (labels, value) in
@@ -67,17 +67,17 @@ public class Counter<NumType: Numeric, Labels: MetricLabels>: Metric, Prometheus
6767
/// - amount: Amount to increment the counter with
6868
/// - labels: Labels to attach to the value
6969
///
70-
/// - Returns: The new value
71-
@discardableResult
72-
public func inc(_ amount: NumType = 1, _ labels: Labels? = nil) -> NumType {
73-
if let labels = labels {
74-
var val = self.metrics[labels] ?? initialValue
75-
val += amount
76-
self.metrics[labels] = val
77-
return val
78-
} else {
79-
self.value += amount
80-
return self.value
70+
public func inc(_ amount: NumType = 1, _ labels: Labels? = nil, _ done: @escaping (NumType) -> Void = { _ in }) {
71+
prometheusQueue.async(flags: .barrier) {
72+
if let labels = labels {
73+
var val = self.metrics[labels] ?? self.initialValue
74+
val += amount
75+
self.metrics[labels] = val
76+
done(val)
77+
} else {
78+
self.value += amount
79+
done(self.value)
80+
}
8181
}
8282
}
8383

Sources/Prometheus/MetricTypes/Gauge.swift

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -67,15 +67,15 @@ public class Gauge<NumType: Numeric, Labels: MetricLabels>: Metric, PrometheusHa
6767
/// - amount: Amount to set the gauge to
6868
/// - labels: Labels to attach to the value
6969
///
70-
/// - Returns: The new value
71-
@discardableResult
72-
public func set(_ amount: NumType, _ labels: Labels? = nil) -> NumType {
70+
public func set(_ amount: NumType, _ labels: Labels? = nil, _ done: @escaping (NumType) -> Void = { _ in }) {
71+
prometheusQueue.async(flags: .barrier) {
7372
if let labels = labels {
7473
self.metrics[labels] = amount
75-
return amount
74+
done(amount)
7675
} else {
7776
self.value = amount
78-
return self.value
77+
done(self.value)
78+
}
7979
}
8080
}
8181

@@ -85,17 +85,17 @@ public class Gauge<NumType: Numeric, Labels: MetricLabels>: Metric, PrometheusHa
8585
/// - amount: Amount to increment the Gauge with
8686
/// - labels: Labels to attach to the value
8787
///
88-
/// - Returns: The new value
89-
@discardableResult
90-
public func inc(_ amount: NumType, _ labels: Labels? = nil) -> NumType {
88+
public func inc(_ amount: NumType, _ labels: Labels? = nil, _ done: @escaping (NumType) -> Void = { _ in }) {
89+
prometheusQueue.async(flags: .barrier) {
9190
if let labels = labels {
92-
var val = self.metrics[labels] ?? initialValue
91+
var val = self.metrics[labels] ?? self.initialValue
9392
val += amount
9493
self.metrics[labels] = val
95-
return val
94+
done(val)
9695
} else {
9796
self.value += amount
98-
return self.value
97+
done(self.value)
98+
}
9999
}
100100
}
101101

@@ -104,10 +104,10 @@ public class Gauge<NumType: Numeric, Labels: MetricLabels>: Metric, PrometheusHa
104104
/// - Parameters:
105105
/// - labels: Labels to attach to the value
106106
///
107-
/// - Returns: The new value
108-
@discardableResult
109-
public func inc(_ labels: Labels? = nil) -> NumType {
110-
return self.inc(1, labels)
107+
public func inc(_ labels: Labels? = nil, _ done: @escaping (NumType) -> Void = { _ in }) {
108+
self.inc(1, labels) {
109+
done($0)
110+
}
111111
}
112112

113113
/// Decrements the Gauge
@@ -116,17 +116,17 @@ public class Gauge<NumType: Numeric, Labels: MetricLabels>: Metric, PrometheusHa
116116
/// - amount: Amount to decrement the Gauge with
117117
/// - labels: Labels to attach to the value
118118
///
119-
/// - Returns: The new value
120-
@discardableResult
121-
public func dec(_ amount: NumType, _ labels: Labels? = nil) -> NumType {
119+
public func dec(_ amount: NumType, _ labels: Labels? = nil, _ done: @escaping (NumType) -> Void = { _ in }) {
120+
prometheusQueue.async(flags: .barrier) {
122121
if let labels = labels {
123-
var val = self.metrics[labels] ?? initialValue
122+
var val = self.metrics[labels] ?? self.initialValue
124123
val -= amount
125124
self.metrics[labels] = val
126-
return val
125+
done(val)
127126
} else {
128127
self.value -= amount
129-
return self.value
128+
done(self.value)
129+
}
130130
}
131131
}
132132

@@ -135,10 +135,10 @@ public class Gauge<NumType: Numeric, Labels: MetricLabels>: Metric, PrometheusHa
135135
/// - Parameters:
136136
/// - labels: Labels to attach to the value
137137
///
138-
/// - Returns: The new value
139-
@discardableResult
140-
public func dec(_ labels: Labels? = nil) -> NumType {
141-
return self.dec(1, labels)
138+
public func dec(_ labels: Labels? = nil, _ done: @escaping (NumType) -> Void = { _ in }) {
139+
self.dec(1, labels) {
140+
done($0)
141+
}
142142
}
143143

144144
/// Gets the value of the Gauge

0 commit comments

Comments
 (0)