|
|
|
@ -380,7 +380,10 @@ class PeerConnectionClient: NSObject, RTCPeerConnectionDelegate, RTCDataChannelD
|
|
|
|
|
let handle = self.handle
|
|
|
|
|
let (promise, fulfill, reject) = Promise<HardenedRTCSessionDescription>.pending()
|
|
|
|
|
let completion: ((RTCSessionDescription?, Error?) -> Void) = { [weak self] (sdp, error) in
|
|
|
|
|
guard let strongSelf = handle.get() else { return }
|
|
|
|
|
guard let strongSelf = handle.get() else {
|
|
|
|
|
reject(NSError(domain: "Obsolete client", code: 0, userInfo: nil))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
strongSelf.assertOnSignalingQueue()
|
|
|
|
|
guard strongSelf.peerConnection != nil else {
|
|
|
|
|
Logger.debug("\(strongSelf.logTag) \(#function) Ignoring obsolete event in terminated client")
|
|
|
|
@ -403,7 +406,10 @@ class PeerConnectionClient: NSObject, RTCPeerConnectionDelegate, RTCDataChannelD
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PeerConnectionClient.signalingQueue.async { [weak self] in
|
|
|
|
|
guard let strongSelf = handle.get() else { return }
|
|
|
|
|
guard let strongSelf = handle.get() else {
|
|
|
|
|
reject(NSError(domain: "Obsolete client", code: 0, userInfo: nil))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
strongSelf.assertOnSignalingQueue()
|
|
|
|
|
guard let peerConnection = strongSelf.peerConnection else {
|
|
|
|
|
Logger.debug("\(strongSelf.logTag) \(#function) Ignoring obsolete event in terminated client")
|
|
|
|
@ -423,18 +429,30 @@ class PeerConnectionClient: NSObject, RTCPeerConnectionDelegate, RTCDataChannelD
|
|
|
|
|
|
|
|
|
|
public func setLocalSessionDescriptionInternal(_ sessionDescription: HardenedRTCSessionDescription) -> Promise<Void> {
|
|
|
|
|
let handle = self.handle
|
|
|
|
|
return PromiseKit.wrap { [weak self] resolve in
|
|
|
|
|
guard let strongSelf = handle.get() else { return }
|
|
|
|
|
let (promise, fulfill, reject) = Promise<Void>.pending()
|
|
|
|
|
PeerConnectionClient.signalingQueue.async { [weak self] in
|
|
|
|
|
guard let strongSelf = handle.get() else {
|
|
|
|
|
reject(NSError(domain: "Obsolete client", code: 0, userInfo: nil))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
strongSelf.assertOnSignalingQueue()
|
|
|
|
|
|
|
|
|
|
guard let peerConnection = peerConnection else {
|
|
|
|
|
guard let peerConnection = strongSelf.peerConnection else {
|
|
|
|
|
Logger.debug("\(strongSelf.logTag) \(#function) Ignoring obsolete event in terminated client")
|
|
|
|
|
reject(NSError(domain: "Obsolete client", code: 0, userInfo: nil))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Logger.verbose("\(strongSelf.logTag) setting local session description: \(sessionDescription)")
|
|
|
|
|
peerConnection.setLocalDescription(sessionDescription.rtcSessionDescription, completionHandler: resolve)
|
|
|
|
|
peerConnection.setLocalDescription(sessionDescription.rtcSessionDescription, completionHandler: { (error) in
|
|
|
|
|
if let error = error {
|
|
|
|
|
reject(error)
|
|
|
|
|
} else {
|
|
|
|
|
fulfill()
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
return promise
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public func setLocalSessionDescription(_ sessionDescription: HardenedRTCSessionDescription) -> Promise<Void> {
|
|
|
|
@ -442,7 +460,10 @@ class PeerConnectionClient: NSObject, RTCPeerConnectionDelegate, RTCDataChannelD
|
|
|
|
|
let handle = self.handle
|
|
|
|
|
let (promise, fulfill, reject) = Promise<Void>.pending()
|
|
|
|
|
PeerConnectionClient.signalingQueue.async { [weak self] in
|
|
|
|
|
guard let strongSelf = handle.get() else { return }
|
|
|
|
|
guard let strongSelf = handle.get() else {
|
|
|
|
|
reject(NSError(domain: "Obsolete client", code: 0, userInfo: nil))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
strongSelf.assertOnSignalingQueue()
|
|
|
|
|
guard let peerConnection = strongSelf.peerConnection else {
|
|
|
|
|
Logger.debug("\(strongSelf.logTag) \(#function) Ignoring obsolete event in terminated client")
|
|
|
|
@ -470,9 +491,7 @@ class PeerConnectionClient: NSObject, RTCPeerConnectionDelegate, RTCDataChannelD
|
|
|
|
|
return setRemoteSessionDescription(remoteDescription)
|
|
|
|
|
.then(on: PeerConnectionClient.signalingQueue) { [weak self] in
|
|
|
|
|
guard let strongSelf = handle.get() else {
|
|
|
|
|
return Promise { _, reject in
|
|
|
|
|
reject(NSError(domain: "Obsolete client", code: 0, userInfo: nil))
|
|
|
|
|
}
|
|
|
|
|
return Promise(error: NSError(domain: "Obsolete client", code: 0, userInfo: nil))
|
|
|
|
|
}
|
|
|
|
|
return strongSelf.negotiateAnswerSessionDescription(constraints: constraints)
|
|
|
|
|
}
|
|
|
|
@ -483,7 +502,10 @@ class PeerConnectionClient: NSObject, RTCPeerConnectionDelegate, RTCDataChannelD
|
|
|
|
|
let handle = self.handle
|
|
|
|
|
let (promise, fulfill, reject) = Promise<Void>.pending()
|
|
|
|
|
PeerConnectionClient.signalingQueue.async { [weak self] in
|
|
|
|
|
guard let strongSelf = handle.get() else { return }
|
|
|
|
|
guard let strongSelf = handle.get() else {
|
|
|
|
|
reject(NSError(domain: "Obsolete client", code: 0, userInfo: nil))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
strongSelf.assertOnSignalingQueue()
|
|
|
|
|
guard let peerConnection = strongSelf.peerConnection else {
|
|
|
|
|
Logger.debug("\(strongSelf.logTag) \(#function) Ignoring obsolete event in terminated client")
|
|
|
|
@ -508,7 +530,10 @@ class PeerConnectionClient: NSObject, RTCPeerConnectionDelegate, RTCDataChannelD
|
|
|
|
|
let handle = self.handle
|
|
|
|
|
let (promise, fulfill, reject) = Promise<HardenedRTCSessionDescription>.pending()
|
|
|
|
|
let completion: ((RTCSessionDescription?, Error?) -> Void) = { [weak self] (sdp, error) in
|
|
|
|
|
guard let strongSelf = handle.get() else { return }
|
|
|
|
|
guard let strongSelf = handle.get() else {
|
|
|
|
|
reject(NSError(domain: "Obsolete client", code: 0, userInfo: nil))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
strongSelf.assertOnSignalingQueue()
|
|
|
|
|
guard strongSelf.peerConnection != nil else {
|
|
|
|
|
Logger.debug("\(strongSelf.logTag) \(#function) Ignoring obsolete event in terminated client")
|
|
|
|
@ -538,11 +563,15 @@ class PeerConnectionClient: NSObject, RTCPeerConnectionDelegate, RTCDataChannelD
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PeerConnectionClient.signalingQueue.async { [weak self] in
|
|
|
|
|
guard let strongSelf = handle.get() else { return }
|
|
|
|
|
guard let strongSelf = handle.get() else {
|
|
|
|
|
reject(NSError(domain: "Obsolete client", code: 0, userInfo: nil))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
strongSelf.assertOnSignalingQueue()
|
|
|
|
|
|
|
|
|
|
guard let peerConnection = strongSelf.peerConnection else {
|
|
|
|
|
Logger.debug("\(strongSelf.logTag) \(#function) Ignoring obsolete event in terminated client")
|
|
|
|
|
reject(NSError(domain: "Obsolete client", code: 0, userInfo: nil))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|