WebSockets: removed unnecessary weaks and simplified code

This commit is contained in:
NachoSoto 2015-09-11 05:42:55 +00:00
parent d5b9afd28d
commit 2bb7360918

View File

@ -378,16 +378,12 @@ public class WebSocket : NSObject, NSStreamDelegate {
} }
if totalSize > 0 { if totalSize > 0 {
if validateResponse(buffer, bufferLen: totalSize) { if validateResponse(buffer, bufferLen: totalSize) {
dispatch_async(queue, { [weak self] in dispatch_async(queue, {
guard let weakSelf = self else { self.connected = true
return if let connectBlock = self.onConnect {
}
weakSelf.connected = true
if let connectBlock = weakSelf.onConnect {
connectBlock() connectBlock()
} }
weakSelf.delegate?.websocketDidConnect(weakSelf) self.delegate?.websocketDidConnect(self)
}) })
totalSize += 1 //skip the last \n totalSize += 1 //skip the last \n
let restSize = bufferLen - totalSize let restSize = bufferLen - totalSize
@ -525,15 +521,9 @@ public class WebSocket : NSObject, NSStreamDelegate {
data = NSData(bytes: UnsafePointer<UInt8>((buffer+offset)), length: Int(len)) data = NSData(bytes: UnsafePointer<UInt8>((buffer+offset)), length: Int(len))
} }
if receivedOpcode == OpCode.Pong.rawValue { if receivedOpcode == OpCode.Pong.rawValue {
dispatch_async(queue, { [weak self] in dispatch_async(queue, {
guard let weakSelf = self else { self.onPong?()
return self.pongDelegate?.websocketDidReceivePong(self)
}
if let pongBlock = weakSelf.onPong {
pongBlock()
}
weakSelf.pongDelegate?.websocketDidReceivePong(weakSelf)
}) })
let step = Int(offset+numericCast(len)) let step = Int(offset+numericCast(len))
@ -618,33 +608,24 @@ public class WebSocket : NSObject, NSStreamDelegate {
dequeueWrite(data, code: OpCode.Pong) dequeueWrite(data, code: OpCode.Pong)
} else if response.code == .TextFrame { } else if response.code == .TextFrame {
let str: NSString? = NSString(data: response.buffer!, encoding: NSUTF8StringEncoding) let str: NSString? = NSString(data: response.buffer!, encoding: NSUTF8StringEncoding)
if str == nil {
if let str = str as String? {
dispatch_async(queue, {
self.onText?(str)
self.delegate?.websocketDidReceiveMessage(self, text: str)
})
} else {
writeError(CloseCode.Encoding.rawValue) writeError(CloseCode.Encoding.rawValue)
return false return false
} }
dispatch_async(queue, { [weak self] in
guard let weakSelf = self else {
return
}
if let textBlock = weakSelf.onText {
textBlock(str! as String)
}
weakSelf.delegate?.websocketDidReceiveMessage(weakSelf, text: str! as String)
})
} else if response.code == .BinaryFrame { } else if response.code == .BinaryFrame {
let data = response.buffer! //local copy so it is perverse for writing let data = response.buffer! //local copy so it is perverse for writing
dispatch_async(queue, { [weak self] in dispatch_async(queue) {
guard let weakSelf = self else { self.onData?(data)
return self.delegate?.websocketDidReceiveData(self, data: data)
}
} }
if let dataBlock = weakSelf.onData {
dataBlock(data)
}
weakSelf.delegate?.websocketDidReceiveData(weakSelf, data: data)
})
}
readStack.removeLast() readStack.removeLast()
return true return true
} }
@ -745,17 +726,12 @@ public class WebSocket : NSObject, NSStreamDelegate {
///used to preform the disconnect delegate ///used to preform the disconnect delegate
private func doDisconnect(error: NSError?) { private func doDisconnect(error: NSError?) {
if !self.didDisconnect { if !self.didDisconnect {
dispatch_async(queue, { [weak self] in dispatch_async(queue) {
guard let weakSelf = self else { self.didDisconnect = true
return
}
weakSelf.didDisconnect = true self.onDisconnect?(error)
if let disconnect = weakSelf.onDisconnect { self.delegate?.websocketDidDisconnect(self, error: error)
disconnect(error)
} }
weakSelf.delegate?.websocketDidDisconnect(weakSelf, error: error)
})
} }
} }