@@ -5,6 +5,7 @@ import NIOHTTP1
5
5
import NIOWebSocket
6
6
import NIOSSL
7
7
import NIOTransportServices
8
+ import Atomics
8
9
9
10
public final class WebSocketClient {
10
11
public enum Error : Swift . Error , LocalizedError {
@@ -37,7 +38,7 @@ public final class WebSocketClient {
37
38
let eventLoopGroupProvider : EventLoopGroupProvider
38
39
let group : EventLoopGroup
39
40
let configuration : Configuration
40
- let isShutdown = NIOAtomic . makeAtomic ( value : false )
41
+ let isShutdown = ManagedAtomic ( false )
41
42
42
43
public init ( eventLoopGroupProvider: EventLoopGroupProvider , configuration: Configuration = . init( ) ) {
43
44
self . eventLoopGroupProvider = eventLoopGroupProvider
@@ -135,7 +136,11 @@ public final class WebSocketClient {
135
136
case . shared:
136
137
return
137
138
case . createNew:
138
- if self . isShutdown. compareAndExchange ( expected: false , desired: true ) {
139
+ if self . isShutdown. compareExchange (
140
+ expected: false ,
141
+ desired: true ,
142
+ ordering: . relaxed
143
+ ) . exchanged {
139
144
try self . group. syncShutdownGracefully ( )
140
145
} else {
141
146
throw WebSocketClient . Error. alreadyShutdown
@@ -162,7 +167,7 @@ public final class WebSocketClient {
162
167
case . shared:
163
168
return
164
169
case . createNew:
165
- assert ( self . isShutdown. load ( ) , " WebSocketClient not shutdown before deinit. " )
170
+ assert ( self . isShutdown. load ( ordering : . relaxed ) , " WebSocketClient not shutdown before deinit. " )
166
171
}
167
172
}
168
173
}
0 commit comments