Merge pull request #622 from Sistemium/development

thread-safe ack generation
This commit is contained in:
Erik Little 2017-02-23 18:50:36 -05:00 committed by GitHub
commit efefecdbe3

View File

@ -54,6 +54,7 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable
private var handlers = [SocketEventHandler]()
private var reconnecting = false
private let ackSemaphore = DispatchSemaphore(value: 1)
private(set) var currentAck = -1
private(set) var handleQueue = DispatchQueue.main
private(set) var reconnectAttempts = -1
@ -161,10 +162,15 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable
}
}
private func createOnAck(_ items: [Any]) -> OnAckCallback {
private func nextAck() -> Int {
ackSemaphore.wait()
defer { ackSemaphore.signal() }
currentAck += 1
return currentAck
}
return OnAckCallback(ackNumber: currentAck, items: items, socket: self)
private func createOnAck(_ items: [Any]) -> OnAckCallback {
return OnAckCallback(ackNumber: nextAck(), items: items, socket: self)
}
func didConnect() {