use int for enum

This commit is contained in:
Erik 2015-04-08 21:14:52 -04:00
parent eb5d03c88b
commit 14487a1beb

View File

@ -74,14 +74,22 @@ public class SocketEngine: NSObject, WebSocketDelegate {
} }
var ws:WebSocket? var ws:WebSocket?
public enum PacketType:String { public enum PacketType:Int {
case OPEN = "0" case OPEN = 0
case CLOSE = "1" case CLOSE = 1
case PING = "2" case PING = 2
case PONG = "3" case PONG = 3
case MESSAGE = "4" case MESSAGE = 4
case UPGRADE = "5" case UPGRADE = 5
case NOOP = "6" case NOOP = 6
init(str:String) {
if let value = str.toInt() {
self = PacketType(rawValue: value)!
} else {
self = PacketType.NOOP
}
}
} }
public init(client:SocketEngineClient, forcePolling:Bool, public init(client:SocketEngineClient, forcePolling:Bool,
@ -442,35 +450,24 @@ public class SocketEngine: NSObject, WebSocketDelegate {
fixDoubleUTF8(&message) fixDoubleUTF8(&message)
} }
let type = message["^(\\d)"].groups()?[1] let type = PacketType(str: (message["^(\\d)"].groups()?[1])!)
if type != PacketType.MESSAGE.rawValue { if type == PacketType.MESSAGE {
// TODO Handle other packets // Remove message type
if message.hasPrefix("b4") { message.removeAtIndex(message.startIndex)
// binary in base64 string
message.removeRange(Range<String.Index>(start: message.startIndex,
end: advance(message.startIndex, 2)))
if let data = NSData(base64EncodedString: message,
options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters) {
// println("sending \(data)")
if self.client == nil { if self.client == nil {
return return
} }
dispatch_async(self.client!.handleQueue) {[weak self] in dispatch_async(self.client!.handleQueue) {[weak self] in
self?.client?.parseBinaryData(data) self?.client?.parseSocketMessage(message)
return return
} }
} } else if type == PacketType.NOOP {
return
} else if type == PacketType.NOOP.rawValue {
self.doPoll() self.doPoll()
return return
} else if type == PacketType.PONG.rawValue { } else if type == PacketType.PONG {
// We should upgrade // We should upgrade
if message == "3probe" { if message == "3probe" {
self.upgradeTransport() self.upgradeTransport()
@ -478,7 +475,7 @@ public class SocketEngine: NSObject, WebSocketDelegate {
} }
return return
} else if type == PacketType.OPEN.rawValue { } else if type == PacketType.OPEN {
var err:NSError? var err:NSError?
message.removeAtIndex(message.startIndex) message.removeAtIndex(message.startIndex)
@ -512,7 +509,7 @@ public class SocketEngine: NSObject, WebSocketDelegate {
} }
return return
} else if type == PacketType.CLOSE.rawValue { } else if type == PacketType.CLOSE {
if self.client == nil { if self.client == nil {
return return
} }
@ -522,23 +519,26 @@ public class SocketEngine: NSObject, WebSocketDelegate {
} }
return return
} } else {
// println("Got something idk what to do with") if message.hasPrefix("b4") {
// println(messageString) // binary in base64 string
}
// Remove message type message.removeRange(Range<String.Index>(start: message.startIndex,
message.removeAtIndex(message.startIndex) end: advance(message.startIndex, 2)))
if self.client == nil { if let data = NSData(base64EncodedString: message,
return options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters)
} where self.client != nil {
// println("sending \(data)")
dispatch_async(self.client!.handleQueue) {[weak self] in dispatch_async(self.client!.handleQueue) {[weak self] in
self?.client?.parseSocketMessage(message) self?.client?.parseBinaryData(data)
return return
} }
} }
}
}
}
private func probeWebSocket() { private func probeWebSocket() {
if self.websocketConnected { if self.websocketConnected {