use optionals instead of try/catch
This commit is contained in:
parent
91cc683b5b
commit
222f622d3a
@ -43,8 +43,8 @@
|
|||||||
74781D5C1B7E83930042CACA /* SocketIOClientStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74781D591B7E83930042CACA /* SocketIOClientStatus.swift */; };
|
74781D5C1B7E83930042CACA /* SocketIOClientStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74781D591B7E83930042CACA /* SocketIOClientStatus.swift */; };
|
||||||
74781D5D1B7E83930042CACA /* SocketIOClientStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74781D591B7E83930042CACA /* SocketIOClientStatus.swift */; };
|
74781D5D1B7E83930042CACA /* SocketIOClientStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74781D591B7E83930042CACA /* SocketIOClientStatus.swift */; };
|
||||||
941A4ABA1B67A56C00C42318 /* TestKind.swift in Sources */ = {isa = PBXBuildFile; fileRef = 941A4AB91B67A56C00C42318 /* TestKind.swift */; };
|
941A4ABA1B67A56C00C42318 /* TestKind.swift in Sources */ = {isa = PBXBuildFile; fileRef = 941A4AB91B67A56C00C42318 /* TestKind.swift */; };
|
||||||
9421F5D01B9DBF5900D625BB /* GenericSocketParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9421F5CF1B9DBF5900D625BB /* GenericSocketParser.swift */; settings = {ASSET_TAGS = (); }; };
|
9421F5D01B9DBF5900D625BB /* SocketGenericParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9421F5CF1B9DBF5900D625BB /* SocketGenericParser.swift */; settings = {ASSET_TAGS = (); }; };
|
||||||
9421F5D11B9DBF5900D625BB /* GenericSocketParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9421F5CF1B9DBF5900D625BB /* GenericSocketParser.swift */; settings = {ASSET_TAGS = (); }; };
|
9421F5D11B9DBF5900D625BB /* SocketGenericParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9421F5CF1B9DBF5900D625BB /* SocketGenericParser.swift */; settings = {ASSET_TAGS = (); }; };
|
||||||
94242BB81B67B0E500AAAC9D /* SocketNamespaceAcknowledgementTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94242BB71B67B0E500AAAC9D /* SocketNamespaceAcknowledgementTest.swift */; };
|
94242BB81B67B0E500AAAC9D /* SocketNamespaceAcknowledgementTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94242BB71B67B0E500AAAC9D /* SocketNamespaceAcknowledgementTest.swift */; };
|
||||||
945B65351B5FCEEA0081E995 /* SocketAckManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5764DF7C1B51F254004FF46E /* SocketAckManager.swift */; };
|
945B65351B5FCEEA0081E995 /* SocketAckManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5764DF7C1B51F254004FF46E /* SocketAckManager.swift */; };
|
||||||
945B65361B5FCEEA0081E995 /* SocketAnyEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5764DF7D1B51F254004FF46E /* SocketAnyEvent.swift */; };
|
945B65361B5FCEEA0081E995 /* SocketAnyEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5764DF7D1B51F254004FF46E /* SocketAnyEvent.swift */; };
|
||||||
@ -112,7 +112,7 @@
|
|||||||
5764DF881B51F254004FF46E /* WebSocket.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = WebSocket.swift; path = SocketIOClientSwift/WebSocket.swift; sourceTree = "<group>"; };
|
5764DF881B51F254004FF46E /* WebSocket.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = WebSocket.swift; path = SocketIOClientSwift/WebSocket.swift; sourceTree = "<group>"; };
|
||||||
74781D591B7E83930042CACA /* SocketIOClientStatus.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SocketIOClientStatus.swift; path = SocketIOClientSwift/SocketIOClientStatus.swift; sourceTree = "<group>"; };
|
74781D591B7E83930042CACA /* SocketIOClientStatus.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SocketIOClientStatus.swift; path = SocketIOClientSwift/SocketIOClientStatus.swift; sourceTree = "<group>"; };
|
||||||
941A4AB91B67A56C00C42318 /* TestKind.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestKind.swift; sourceTree = "<group>"; };
|
941A4AB91B67A56C00C42318 /* TestKind.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestKind.swift; sourceTree = "<group>"; };
|
||||||
9421F5CF1B9DBF5900D625BB /* GenericSocketParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GenericSocketParser.swift; sourceTree = "<group>"; };
|
9421F5CF1B9DBF5900D625BB /* SocketGenericParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketGenericParser.swift; sourceTree = "<group>"; };
|
||||||
94242BB71B67B0E500AAAC9D /* SocketNamespaceAcknowledgementTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketNamespaceAcknowledgementTest.swift; sourceTree = "<group>"; };
|
94242BB71B67B0E500AAAC9D /* SocketNamespaceAcknowledgementTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketNamespaceAcknowledgementTest.swift; sourceTree = "<group>"; };
|
||||||
945B65421B63D9DB0081E995 /* SocketEmitTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketEmitTest.swift; sourceTree = "<group>"; };
|
945B65421B63D9DB0081E995 /* SocketEmitTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketEmitTest.swift; sourceTree = "<group>"; };
|
||||||
949FAE8C1B9B94E600073BE9 /* SocketParserTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketParserTest.swift; sourceTree = "<group>"; };
|
949FAE8C1B9B94E600073BE9 /* SocketParserTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketParserTest.swift; sourceTree = "<group>"; };
|
||||||
@ -270,7 +270,7 @@
|
|||||||
5764DF831B51F254004FF46E /* SocketLogger.swift */,
|
5764DF831B51F254004FF46E /* SocketLogger.swift */,
|
||||||
5764DF841B51F254004FF46E /* SocketPacket.swift */,
|
5764DF841B51F254004FF46E /* SocketPacket.swift */,
|
||||||
5764DF851B51F254004FF46E /* SocketParser.swift */,
|
5764DF851B51F254004FF46E /* SocketParser.swift */,
|
||||||
9421F5CF1B9DBF5900D625BB /* GenericSocketParser.swift */,
|
9421F5CF1B9DBF5900D625BB /* SocketGenericParser.swift */,
|
||||||
5764DF861B51F254004FF46E /* SocketTypes.swift */,
|
5764DF861B51F254004FF46E /* SocketTypes.swift */,
|
||||||
5764DF871B51F254004FF46E /* SwiftRegex.swift */,
|
5764DF871B51F254004FF46E /* SwiftRegex.swift */,
|
||||||
5764DF881B51F254004FF46E /* WebSocket.swift */,
|
5764DF881B51F254004FF46E /* WebSocket.swift */,
|
||||||
@ -458,7 +458,7 @@
|
|||||||
5764DF911B51F254004FF46E /* SocketEventHandler.swift in Sources */,
|
5764DF911B51F254004FF46E /* SocketEventHandler.swift in Sources */,
|
||||||
5764DF931B51F254004FF46E /* SocketFixUTF8.swift in Sources */,
|
5764DF931B51F254004FF46E /* SocketFixUTF8.swift in Sources */,
|
||||||
5764DF951B51F254004FF46E /* SocketIOClient.swift in Sources */,
|
5764DF951B51F254004FF46E /* SocketIOClient.swift in Sources */,
|
||||||
9421F5D01B9DBF5900D625BB /* GenericSocketParser.swift in Sources */,
|
9421F5D01B9DBF5900D625BB /* SocketGenericParser.swift in Sources */,
|
||||||
5764DF8B1B51F254004FF46E /* SocketAnyEvent.swift in Sources */,
|
5764DF8B1B51F254004FF46E /* SocketAnyEvent.swift in Sources */,
|
||||||
5764DF971B51F254004FF46E /* SocketLogger.swift in Sources */,
|
5764DF971B51F254004FF46E /* SocketLogger.swift in Sources */,
|
||||||
74781D5A1B7E83930042CACA /* SocketIOClientStatus.swift in Sources */,
|
74781D5A1B7E83930042CACA /* SocketIOClientStatus.swift in Sources */,
|
||||||
@ -480,7 +480,7 @@
|
|||||||
94CB8F0B1B6E48B90019ED53 /* SocketTestCases.swift in Sources */,
|
94CB8F0B1B6E48B90019ED53 /* SocketTestCases.swift in Sources */,
|
||||||
945B65371B5FCEEA0081E995 /* SocketEngine.swift in Sources */,
|
945B65371B5FCEEA0081E995 /* SocketEngine.swift in Sources */,
|
||||||
945B65351B5FCEEA0081E995 /* SocketAckManager.swift in Sources */,
|
945B65351B5FCEEA0081E995 /* SocketAckManager.swift in Sources */,
|
||||||
9421F5D11B9DBF5900D625BB /* GenericSocketParser.swift in Sources */,
|
9421F5D11B9DBF5900D625BB /* SocketGenericParser.swift in Sources */,
|
||||||
941A4ABA1B67A56C00C42318 /* TestKind.swift in Sources */,
|
941A4ABA1B67A56C00C42318 /* TestKind.swift in Sources */,
|
||||||
94CB8F0D1B6E66E60019ED53 /* AbstractSocketTest.swift in Sources */,
|
94CB8F0D1B6E66E60019ED53 /* AbstractSocketTest.swift in Sources */,
|
||||||
945B65431B63D9DB0081E995 /* SocketEmitTest.swift in Sources */,
|
945B65431B63D9DB0081E995 /* SocketEmitTest.swift in Sources */,
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
struct GenericSocketParser {
|
struct SocketGenericParser {
|
||||||
let message: String
|
let message: String
|
||||||
var currentIndex: Int
|
var currentIndex: Int
|
||||||
var messageCharacters: [Character] {
|
var messageCharacters: [Character] {
|
||||||
@ -68,39 +68,37 @@ class SocketParserTest: XCTestCase {
|
|||||||
|
|
||||||
func testInvalidInput() {
|
func testInvalidInput() {
|
||||||
let message = "8"
|
let message = "8"
|
||||||
do {
|
XCTAssertNil(SocketParser.parseString(message))
|
||||||
try SocketParser.parseString(message)
|
|
||||||
XCTFail("Should throw exeption")
|
|
||||||
} catch {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func testGenericParser() {
|
func testGenericParser() {
|
||||||
var parser = GenericSocketParser(message: "61-/swift,", currentIndex: 0)
|
var parser = SocketGenericParser(message: "61-/swift,", currentIndex: 0)
|
||||||
XCTAssertEqual(parser.read(1), "6")
|
XCTAssertEqual(parser.read(1), "6")
|
||||||
XCTAssertEqual(parser.currentCharacter, "1")
|
XCTAssertEqual(parser.currentCharacter, "1")
|
||||||
XCTAssertEqual(parser.readUntilStringOccurence("-"), "1")
|
XCTAssertEqual(parser.readUntilStringOccurence("-"), "1")
|
||||||
XCTAssertEqual(parser.currentCharacter, "-")
|
XCTAssertEqual(parser.currentCharacter, "-")
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func validateParseResult(message:String) {
|
func validateParseResult(message:String) {
|
||||||
let validValues = SocketParserTest.packetTypes[message]!
|
let validValues = SocketParserTest.packetTypes[message]!
|
||||||
let packet = try! SocketParser.parseString(message)
|
let packet = SocketParser.parseString(message)
|
||||||
let type = message.substringWithRange(Range<String.Index>(start: message.startIndex, end: message.startIndex.advancedBy(1)))
|
let type = message.substringWithRange(Range<String.Index>(start: message.startIndex, end: message.startIndex.advancedBy(1)))
|
||||||
XCTAssertEqual(packet.type, SocketPacket.PacketType(str:type)!)
|
if let packet = packet {
|
||||||
XCTAssertEqual(packet.nsp, validValues.0)
|
XCTAssertEqual(packet.type, SocketPacket.PacketType(str:type)!)
|
||||||
XCTAssertTrue((packet.data as NSArray).isEqualToArray(validValues.1))
|
XCTAssertEqual(packet.nsp, validValues.0)
|
||||||
XCTAssertTrue((packet.binary as NSArray).isEqualToArray(validValues.2))
|
XCTAssertTrue((packet.data as NSArray).isEqualToArray(validValues.1))
|
||||||
XCTAssertEqual(packet.id, validValues.3)
|
XCTAssertTrue((packet.binary as NSArray).isEqualToArray(validValues.2))
|
||||||
|
XCTAssertEqual(packet.id, validValues.3)
|
||||||
|
}else {
|
||||||
|
XCTFail()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func testParsePerformance() {
|
func testParsePerformance() {
|
||||||
let keys = Array(SocketParserTest.packetTypes.keys)
|
let keys = Array(SocketParserTest.packetTypes.keys)
|
||||||
measureBlock({
|
measureBlock({
|
||||||
for item in keys.enumerate() {
|
for item in keys.enumerate() {
|
||||||
try! SocketParser.parseString(item.element)
|
SocketParser.parseString(item.element)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,10 +22,6 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
enum SocketParserError: ErrorType {
|
|
||||||
case InvalidMessageType, InvalidBinaryPalceholder
|
|
||||||
}
|
|
||||||
|
|
||||||
class SocketParser {
|
class SocketParser {
|
||||||
|
|
||||||
private static func isCorrectNamespace(nsp: String, _ socket: SocketIOClient) -> Bool {
|
private static func isCorrectNamespace(nsp: String, _ socket: SocketIOClient) -> Bool {
|
||||||
@ -61,11 +57,11 @@ class SocketParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Translation of socket.io-client#decodeString
|
// Translation of socket.io-client#decodeString
|
||||||
static func parseString(message: String) throws -> SocketPacket {
|
static func parseString(message: String) -> SocketPacket? {
|
||||||
var parser = GenericSocketParser(message: message, currentIndex: 0)
|
var parser = SocketGenericParser(message: message, currentIndex: 0)
|
||||||
guard let typeString = parser.read(1),
|
guard let typeString = parser.read(1),
|
||||||
let type = SocketPacket.PacketType(str: typeString) else {
|
let type = SocketPacket.PacketType(str: typeString) else {
|
||||||
throw SocketParserError.InvalidMessageType
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if parser.messageCharacters.count == 1 {
|
if parser.messageCharacters.count == 1 {
|
||||||
@ -80,7 +76,7 @@ class SocketParser {
|
|||||||
where parser.read(1)! == "-" {
|
where parser.read(1)! == "-" {
|
||||||
placeholders = holders
|
placeholders = holders
|
||||||
} else {
|
} else {
|
||||||
throw SocketParserError.InvalidBinaryPalceholder
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if parser.currentCharacter == "/" {
|
if parser.currentCharacter == "/" {
|
||||||
@ -129,35 +125,27 @@ class SocketParser {
|
|||||||
|
|
||||||
Logger.log("Parsing %@", type: "SocketParser", args: message)
|
Logger.log("Parsing %@", type: "SocketParser", args: message)
|
||||||
|
|
||||||
do {
|
guard let pack = parseString(message) else {
|
||||||
let pack = try parseString(message)
|
Logger.error("Parsing message", type: "SocketParser", args: message)
|
||||||
Logger.log("Decoded packet as: %@", type: "SocketParser", args: pack.description)
|
return
|
||||||
|
|
||||||
switch pack.type {
|
|
||||||
case .Event:
|
|
||||||
handleEvent(pack, socket: socket)
|
|
||||||
case .Ack:
|
|
||||||
handleAck(pack, socket: socket)
|
|
||||||
case .BinaryEvent:
|
|
||||||
handleBinary(pack, socket: socket)
|
|
||||||
case .BinaryAck:
|
|
||||||
handleBinary(pack, socket: socket)
|
|
||||||
case .Connect:
|
|
||||||
handleConnect(pack, socket: socket)
|
|
||||||
case .Disconnect:
|
|
||||||
socket.didDisconnect("Got Disconnect")
|
|
||||||
case .Error:
|
|
||||||
socket.didError("Error: \(pack.data)")
|
|
||||||
}
|
|
||||||
|
|
||||||
}catch SocketParserError.InvalidBinaryPalceholder {
|
|
||||||
Logger.error("Parsed Invalid Binary Placeholder", type: "SocketParser")
|
|
||||||
}
|
}
|
||||||
catch SocketParserError.InvalidMessageType {
|
Logger.log("Decoded packet as: %@", type: "SocketParser", args: pack.description)
|
||||||
Logger.error("Parsed Invalid Binary Placeholder", type: "SocketParser")
|
|
||||||
}
|
switch pack.type {
|
||||||
catch {
|
case .Event:
|
||||||
|
handleEvent(pack, socket: socket)
|
||||||
|
case .Ack:
|
||||||
|
handleAck(pack, socket: socket)
|
||||||
|
case .BinaryEvent:
|
||||||
|
handleBinary(pack, socket: socket)
|
||||||
|
case .BinaryAck:
|
||||||
|
handleBinary(pack, socket: socket)
|
||||||
|
case .Connect:
|
||||||
|
handleConnect(pack, socket: socket)
|
||||||
|
case .Disconnect:
|
||||||
|
socket.didDisconnect("Got Disconnect")
|
||||||
|
case .Error:
|
||||||
|
socket.didError("Error: \(pack.data)")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user