From f5f2a15133e8c0f10eca883f14a5bab54973fa47 Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 12 Sep 2015 21:26:09 -0400 Subject: [PATCH] tweaks to string reading --- SocketIO-iOSTests/SocketParserTest.swift | 2 +- SocketIOClientSwift/SocketEngine.swift | 3 +-- SocketIOClientSwift/SocketParser.swift | 4 ++-- SocketIOClientSwift/SocketStringReader.swift | 5 +++++ 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/SocketIO-iOSTests/SocketParserTest.swift b/SocketIO-iOSTests/SocketParserTest.swift index beab086..df9fd1d 100644 --- a/SocketIO-iOSTests/SocketParserTest.swift +++ b/SocketIO-iOSTests/SocketParserTest.swift @@ -72,7 +72,7 @@ class SocketParserTest: XCTestCase { } func testGenericParser() { - var parser = SocketStringReader(message: "61-/swift,", currentIndex: "61-/swift,".startIndex) + var parser = SocketStringReader(message: "61-/swift,") XCTAssertEqual(parser.read(1), "6") XCTAssertEqual(parser.currentCharacter, "1") XCTAssertEqual(parser.readUntilStringOccurence("-"), "1") diff --git a/SocketIOClientSwift/SocketEngine.swift b/SocketIOClientSwift/SocketEngine.swift index da090c9..3ac4341 100644 --- a/SocketIOClientSwift/SocketEngine.swift +++ b/SocketIOClientSwift/SocketEngine.swift @@ -484,13 +484,12 @@ public final class SocketEngine: NSObject, WebSocketDelegate { doRequest(reqPolling) } - // Translatation of engine.io-parser#decodePayload private func parsePollingMessage(str: String) { guard str.characters.count != 1 else { return } - var reader = SocketStringReader(message: str, currentIndex: str.startIndex) + var reader = SocketStringReader(message: str) while reader.hasNext { let n = reader.readUntilStringOccurence(":") diff --git a/SocketIOClientSwift/SocketParser.swift b/SocketIOClientSwift/SocketParser.swift index f57487e..48fd29d 100644 --- a/SocketIOClientSwift/SocketParser.swift +++ b/SocketIOClientSwift/SocketParser.swift @@ -57,9 +57,8 @@ class SocketParser { } } - // Translation of socket.io-client#decodeString static func parseString(message: String) -> SocketPacket? { - var parser = SocketStringReader(message: message, currentIndex: message.startIndex) + var parser = SocketStringReader(message: message) guard let type = SocketPacket.PacketType(str: parser.read(1)) else {return nil} @@ -89,6 +88,7 @@ class SocketParser { } var idString = "" + while parser.hasNext { if let int = Int(parser.read(1)) { idString += String(int) diff --git a/SocketIOClientSwift/SocketStringReader.swift b/SocketIOClientSwift/SocketStringReader.swift index 2e90081..95ea3de 100644 --- a/SocketIOClientSwift/SocketStringReader.swift +++ b/SocketIOClientSwift/SocketStringReader.swift @@ -19,6 +19,11 @@ struct SocketStringReader { return String(message[currentIndex]) } + init(message: String) { + self.message = message + currentIndex = message.startIndex + } + mutating func advanceIndexBy(n: Int) { currentIndex = currentIndex.advancedBy(n) }