The subscriptions, subscriptionsWaitingAck and unsubscriptionsWaitingAck are not thread safe.
I created a ThreadSafeDictionary to make them thread safe.
public var subscriptions: [String: CocoaMQTTQoS] = [:]
fileprivate var subscriptionsWaitingAck: [UInt16: [MqttSubscription]] = [:]
fileprivate var unsubscriptionsWaitingAck: [UInt16: [MqttSubscription]] = [:]
The subscriptions, subscriptionsWaitingAck and unsubscriptionsWaitingAck are not thread safe. I created a
ThreadSafeDictionary
to make them thread safe.