Respond to CR.

pull/1/head
Matthew Chen 7 years ago
parent 918abb02a1
commit 735b4e07b1

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

Loading…
Cancel
Save