@@ -7,6 +7,8 @@ import NIOFoundationCompat
7
7
import NIOSSL
8
8
9
9
public let WEBSOCKET_LOCKER_QUEUE = "SyncLocker"
10
+ public let WEBSOCKET_THREAD_QUEUE = "ThreadLocker"
11
+ public let WEBSOCKET_CHANNEL_QUEUE = "ChannelLocker"
10
12
11
13
/// Creates and manages connections to a WebSocket server.
12
14
///
@@ -20,16 +22,35 @@ public class WebSocketClient {
20
22
let query: String
21
23
let headers: HTTPHeaders
22
24
let frameKey: String
23
-
25
+
24
26
public private(set) var maxFrameSize: Int
25
-
26
- var channel: Channel? = nil
27
+
27
28
var tlsEnabled: Bool = false
28
29
var closeSent: Bool = false
29
30
30
- let locker = DispatchQueue(label: WEBSOCKET_LOCKER_QUEUE, qos: .background)
31
+ private let locker = DispatchQueue(label: WEBSOCKET_LOCKER_QUEUE, qos: .background)
32
+ private let channelQueue = DispatchQueue(label: WEBSOCKET_CHANNEL_QUEUE)
33
+ private let threadGroupQueue = DispatchQueue(label: WEBSOCKET_THREAD_QUEUE)
31
34
32
- var threadGroup: MultiThreadedEventLoopGroup? = nil
35
+ var channel: Channel? {
36
+ get {
37
+ return channelQueue.sync { _channel }
38
+ }
39
+ set {
40
+ channelQueue.sync { _channel = newValue }
41
+ }
42
+ }
43
+ private var _channel: Channel? = nil
44
+
45
+ var threadGroup: MultiThreadedEventLoopGroup? {
46
+ get {
47
+ return threadGroupQueue.sync { _threadGroup }
48
+ }
49
+ set {
50
+ threadGroupQueue.sync { _threadGroup = newValue }
51
+ }
52
+ }
53
+ private var _threadGroup: MultiThreadedEventLoopGroup?
33
54
34
55
weak var delegate: WebSocketClientDelegate? = nil
35
56
0 commit comments