Simplified SocketEngine.swift

This commit is contained in:
NachoSoto 2015-09-11 05:25:01 +00:00
parent d2ae3705ff
commit 4f2040fbfd

View File

@ -350,8 +350,10 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
// We had packets waiting for send when we upgraded // We had packets waiting for send when we upgraded
// Send them raw // Send them raw
private func flushWaitingForPostToWebSocket() { private func flushWaitingForPostToWebSocket() {
if let ws = ws {
for msg in postWait { for msg in postWait {
ws?.writeString(msg) ws.writeString(msg)
}
} }
postWait.removeAll(keepCapacity: true) postWait.removeAll(keepCapacity: true)
@ -495,7 +497,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
var n = 0 var n = 0
var msg = "" var msg = ""
func testLength(length:String, inout n:Int) -> Bool { func testLength(length: String, inout n: Int) -> Bool {
if let num = Int(length) { if let num = Int(length) {
n = num n = num
return false return false
@ -525,8 +527,8 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
if msg.characters.count != 0 { if msg.characters.count != 0 {
// Be sure to capture the value of the msg // Be sure to capture the value of the msg
dispatch_async(handleQueue) {[weak self, msg] in dispatch_async(handleQueue) {
self?.parseEngineMessage(msg, fromPolling: true) self.parseEngineMessage(msg, fromPolling: true)
} }
} }
@ -549,7 +551,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
let type = PacketType(str: (message["^(\\d)"].groups()?[1]) ?? "") ?? { let type = PacketType(str: (message["^(\\d)"].groups()?[1]) ?? "") ?? {
self.checkIfMessageIsBase64Binary(message) self.checkIfMessageIsBase64Binary(message)
return PacketType.Noop return .Noop
}() }()
switch type { switch type {
@ -608,13 +610,11 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
postWait.append(strMsg) postWait.append(strMsg)
if let datas = datas { for data in datas ?? [] {
for data in datas {
let (_, b64Data) = createBinaryDataForSend(data) let (_, b64Data) = createBinaryDataForSend(data)
postWait.append(b64Data!) postWait.append(b64Data!)
} }
}
if !waitingForPost { if !waitingForPost {
flushWaitingForPost() flushWaitingForPost()
@ -629,26 +629,22 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
ws?.writeString("\(type.rawValue)\(str)") ws?.writeString("\(type.rawValue)\(str)")
if let datas = datas { for data in datas ?? [] {
for data in datas {
let (data, _) = createBinaryDataForSend(data) let (data, _) = createBinaryDataForSend(data)
if data != nil { if data != nil {
ws?.writeData(data!) ws?.writeData(data!)
} }
} }
} }
}
// Starts the ping timer // Starts the ping timer
private func startPingTimer() { private func startPingTimer() {
guard pingInterval != nil else { if let pingInterval = pingInterval {
return
}
pingTimer?.invalidate() pingTimer?.invalidate()
dispatch_async(dispatch_get_main_queue()) {[weak self] in pingTimer = nil
if let this = self {
this.pingTimer = NSTimer.scheduledTimerWithTimeInterval(this.pingInterval!, target: this, dispatch_async(dispatch_get_main_queue()) {
self.pingTimer = NSTimer.scheduledTimerWithTimeInterval(pingInterval, target: self,
selector: Selector("sendPing"), userInfo: nil, repeats: true) selector: Selector("sendPing"), userInfo: nil, repeats: true)
} }
} }
@ -672,16 +668,16 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
Write a message, independent of transport. Write a message, independent of transport.
*/ */
public func write(msg: String, withType type: PacketType, withData data: [NSData]?) { public func write(msg: String, withType type: PacketType, withData data: [NSData]?) {
dispatch_async(emitQueue) {[weak self] in dispatch_async(emitQueue) {
if let this = self where this.connected { if self.connected {
if this.websocket { if self.websocket {
Logger.log("Writing ws: %@ has data: %@", type: this.logType, args: msg, Logger.log("Writing ws: %@ has data: %@", type: self.logType, args: msg,
data == nil ? false : true) data == nil ? false : true)
this.sendWebSocketMessage(msg, withType: type, datas: data) self.sendWebSocketMessage(msg, withType: type, datas: data)
} else { } else {
Logger.log("Writing poll: %@ has data: %@", type: this.logType, args: msg, Logger.log("Writing poll: %@ has data: %@", type: self.logType, args: msg,
data == nil ? false : true) data == nil ? false : true)
this.sendPollMessage(msg, withType: type, datas: data) self.sendPollMessage(msg, withType: type, datas: data)
} }
} }
} }