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