refactor clean up code

This commit is contained in:
Lukas Schmidt 2015-09-06 22:45:18 +02:00
parent de0d0b8676
commit 16ed2bd130
2 changed files with 25 additions and 17 deletions

View File

@ -57,7 +57,8 @@ class SocketParserTest: XCTestCase {
func testInvalidInput() { func testInvalidInput() {
let message = "10" let message = "10"
validateParseResult(message) let packet = SocketParser.parseString(message)
XCTAssertNil(packet)
} }
func validateParseResult(message:String) { func validateParseResult(message:String) {
@ -75,7 +76,13 @@ class SocketParserTest: XCTestCase {
} }
} }
// func testParsePerformance() { func testParsePerformance() {
// let keys = Array(SocketParserTest.packetTypes.keys)
// } measureBlock({
for item in keys.enumerate() {
SocketParser.parseString(item.element)
}
})
}
} }

View File

@ -73,10 +73,12 @@ class SocketParser {
// Translation of socket.io-client#decodeString // Translation of socket.io-client#decodeString
static func parseString(str: String) -> SocketPacket? { static func parseString(str: String) -> SocketPacket? {
let arr = Array(str.characters) let arr = Array(str.characters)
let type = String(arr[0]) guard let type = SocketPacket.PacketType(str: String(arr[0])) else {
NSLog("Error parsing \(str)")
return nil}
if arr.count == 1 { if arr.count == 1 {
return SocketPacket(type: SocketPacket.PacketType(str: type)!, nsp: "/") return SocketPacket(type: type, nsp: "/")
} }
var id: Int? var id: Int?
@ -84,7 +86,7 @@ class SocketParser {
var i = 0 var i = 0
var placeholders = -1 var placeholders = -1
if type == "5" || type == "6" { if type == .BinaryEvent || type == .BinaryAck {
var buf = "" var buf = ""
while arr[++i] != "-" { while arr[++i] != "-" {
@ -117,7 +119,7 @@ class SocketParser {
} }
if i + 1 >= arr.count { if i + 1 >= arr.count {
return SocketPacket(type: SocketPacket.PacketType(str: type)!, id: id ?? -1, return SocketPacket(type: type, id: id ?? -1,
nsp: nsp ?? "/", placeholders: placeholders) nsp: nsp ?? "/", placeholders: placeholders)
} }
@ -142,7 +144,7 @@ class SocketParser {
let noPlaceholders = d["(\\{\"_placeholder\":true,\"num\":(\\d*)\\})"] ~= "\"~~$2\"" let noPlaceholders = d["(\\{\"_placeholder\":true,\"num\":(\\d*)\\})"] ~= "\"~~$2\""
let data = SocketParser.parseData(noPlaceholders) as? [AnyObject] ?? [noPlaceholders] let data = SocketParser.parseData(noPlaceholders) as? [AnyObject] ?? [noPlaceholders]
return SocketPacket(type: SocketPacket.PacketType(str: type)!, data: data, id: id ?? -1, return SocketPacket(type: type, data: data, id: id ?? -1,
nsp: nsp ?? "/", placeholders: placeholders) nsp: nsp ?? "/", placeholders: placeholders)
} }
@ -174,7 +176,6 @@ class SocketParser {
// Parses messages recieved // Parses messages recieved
static func parseSocketMessage(stringMessage: String, socket: SocketIOClient) { static func parseSocketMessage(stringMessage: String, socket: SocketIOClient) {
guard !stringMessage.isEmpty else { return } guard !stringMessage.isEmpty else { return }
print(stringMessage)
Logger.log("Parsing %@", client: socket, altType: "SocketParser", args: stringMessage) Logger.log("Parsing %@", client: socket, altType: "SocketParser", args: stringMessage)
@ -186,19 +187,19 @@ class SocketParser {
Logger.log("Decoded packet as: %@", client: socket, altType: "SocketParser", args: pack.description) Logger.log("Decoded packet as: %@", client: socket, altType: "SocketParser", args: pack.description)
switch pack.type { switch pack.type {
case SocketPacket.PacketType.Event: case .Event:
handleEvent(pack, socket: socket) handleEvent(pack, socket: socket)
case SocketPacket.PacketType.Ack: case .Ack:
handleAck(pack, socket: socket) handleAck(pack, socket: socket)
case SocketPacket.PacketType.BinaryEvent: case .BinaryEvent:
handleBinaryEvent(pack, socket: socket) handleBinaryEvent(pack, socket: socket)
case SocketPacket.PacketType.BinaryAck: case .BinaryAck:
handleBinaryAck(pack, socket: socket) handleBinaryAck(pack, socket: socket)
case SocketPacket.PacketType.Connect: case .Connect:
handleConnect(pack, socket: socket) handleConnect(pack, socket: socket)
case SocketPacket.PacketType.Disconnect: case .Disconnect:
socket.didDisconnect("Got Disconnect") socket.didDisconnect("Got Disconnect")
case SocketPacket.PacketType.Error: case .Error:
socket.didError("Error: \(pack.data)") socket.didError("Error: \(pack.data)")
} }
} }