@@ -24,8 +24,11 @@ public final class StatsdClient: MetricsFactory {
2424 private var counters = [ String: CounterHandler] ( ) // protected by a lock
2525 private var recorders = [ String: RecorderHandler] ( ) // protected by a lock
2626 private var timers = [ String: TimerHandler] ( ) // protected by a lock
27+ #if swift(<5.5)
2728 private let lock = Lock ( )
28-
29+ #else
30+ private let lock = NIOLock ( )
31+ #endif
2932 /// Create a new instance of `StatsdClient`.
3033 ///
3134 /// - Parameters:
@@ -130,7 +133,7 @@ public final class StatsdClient: MetricsFactory {
130133private final class StatsdCounter : CounterHandler , Equatable {
131134 let id : String
132135 let client : Client
133- var value = NIOAtomic < Int64 > . makeAtomic ( value : 0 )
136+ var value = AtomicCounter ( 0 )
134137
135138 init ( label: String , dimensions: [ ( String , String ) ] , client: Client ) {
136139 self . id = StatsdUtils . id ( label: label, dimensions: dimensions, sanitizer: client. metricNameSanitizer)
@@ -153,7 +156,8 @@ private final class StatsdCounter: CounterHandler, Equatable {
153156 return // already at max
154157 }
155158 let newValue = oldValue. addingReportingOverflow ( amount)
156- if self . value. compareAndExchange ( expected: oldValue, desired: newValue. overflow ? Int64 . max : newValue. partialValue) {
159+
160+ if self . value. compareExchange ( expected: oldValue, desired: newValue. overflow ? Int64 . max : newValue. partialValue) {
157161 return
158162 }
159163 }
@@ -251,10 +255,14 @@ private final class Client {
251255
252256 private let address : SocketAddress
253257
254- private let isShutdown = NIOAtomic < Bool > . makeAtomic ( value : false )
258+ private let isShutdown = AtomicBoolean ( false )
255259
256260 private var state = State . disconnected
261+ #if swift(<5.5)
257262 private let lock = Lock ( )
263+ #else
264+ private let lock = NIOLock ( )
265+ #endif
258266
259267 private enum State {
260268 case disconnected
@@ -285,7 +293,7 @@ private final class Client {
285293 func shutdown( _ callback: @escaping ( Error ? ) -> Void ) {
286294 switch self . eventLoopGroupProvider {
287295 case . createNew:
288- if self . isShutdown. compareAndExchange ( expected: false , desired: true ) {
296+ if self . isShutdown. compareExchange ( expected: false , desired: true ) {
289297 self . eventLoopGroup. shutdownGracefully ( callback)
290298 }
291299 case . shared:
0 commit comments