From 4de06525687234ff44a8a070556b807e4e875c5f Mon Sep 17 00:00:00 2001 From: Lukas Schmidt Date: Fri, 4 Sep 2015 13:48:19 +0200 Subject: [PATCH 1/3] improve logger api --- SocketIOClientSwift/SocketEngine.swift | 16 +++++------ SocketIOClientSwift/SocketIOClient.swift | 5 ++-- SocketIOClientSwift/SocketLogger.swift | 35 +++++++++--------------- SocketIOClientSwift/SocketParser.swift | 2 +- 4 files changed, 23 insertions(+), 35 deletions(-) diff --git a/SocketIOClientSwift/SocketEngine.swift b/SocketIOClientSwift/SocketEngine.swift index bd32394..564c560 100644 --- a/SocketIOClientSwift/SocketEngine.swift +++ b/SocketIOClientSwift/SocketEngine.swift @@ -24,9 +24,7 @@ import Foundation -public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient { - public let logType = "SocketEngine" - +public final class SocketEngine: NSObject, WebSocketDelegate { private typealias Probe = (msg: String, type: PacketType, data: [NSData]?) private typealias ProbeWaitQueue = [Probe] @@ -199,7 +197,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient { private func doFastUpgrade() { if waitingForPoll { - Logger.err("Outstanding poll when switched to WebSockets," + + Logger.error("Outstanding poll when switched to WebSockets," + "we'll probably disconnect soon. You should report this.", client: self, altType: nil) } @@ -248,7 +246,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient { if this.polling { this.handlePollingFailed(err?.localizedDescription ?? "Error") } else { - Logger.err(err?.localizedDescription ?? "Error", client: this, altType: nil) + Logger.error(err?.localizedDescription ?? "Error", client: this, altType: nil) } return } @@ -412,7 +410,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient { } } } catch { - Logger.err("Error parsing open packet", client: self, altType: nil) + Logger.error("Error parsing open packet", client: self, altType: nil) return } @@ -448,7 +446,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient { public func open(opts: [String: AnyObject]? = nil) { if connected { - Logger.err("Tried to open while connected", client: self, altType: nil) + Logger.error("Tried to open while connected", client: self, altType: nil) client?.didError("Tried to open while connected") return @@ -512,7 +510,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient { length += chr } else { if length == "" || testLength(length, n: &n) { - Logger.err("Parsing error: %@", client: self, altType: nil, args: str) + Logger.error("Parsing error: %@", client: self, altType: nil, args: str) handlePollingFailed("Error parsing XHR message") return } @@ -520,7 +518,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient { msg = String(strArray[i+1...i+n]) if let lengthInt = Int(length) where lengthInt != msg.characters.count { - Logger.err("Parsing error: %@", client: self, altType: nil, args: str) + Logger.error("Parsing error: %@", client: self, altType: nil, args: str) return } diff --git a/SocketIOClientSwift/SocketIOClient.swift b/SocketIOClientSwift/SocketIOClient.swift index 40964bf..faa122e 100644 --- a/SocketIOClientSwift/SocketIOClient.swift +++ b/SocketIOClientSwift/SocketIOClient.swift @@ -24,7 +24,7 @@ import Foundation -public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient { +public final class SocketIOClient: NSObject, SocketEngineClient { private var anyHandler: ((SocketAnyEvent) -> Void)? private var currentReconnectAttempt = 0 private var handlers = ContiguousArray() @@ -38,7 +38,6 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient public let emitQueue = dispatch_queue_create("emitQueue", DISPATCH_QUEUE_SERIAL) public let handleQueue: dispatch_queue_t! - public let logType = "SocketClient" public let socketURL: String public private(set) var engine: SocketEngine? @@ -224,7 +223,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient /// error public func didError(reason: AnyObject) { - Logger.err("%@", client: self, altType: nil, args: reason) + Logger.error("%@", client: self, altType: nil, args: reason) handleEvent("error", data: reason as? [AnyObject] ?? [reason], isInternalMessage: true) diff --git a/SocketIOClientSwift/SocketLogger.swift b/SocketIOClientSwift/SocketLogger.swift index af2cfe8..e1503a8 100644 --- a/SocketIOClientSwift/SocketLogger.swift +++ b/SocketIOClientSwift/SocketLogger.swift @@ -26,43 +26,34 @@ import Foundation var Logger: SocketLogger = DefaultSocketLogger() -public protocol SocketLogClient { - /// The type of object being logged - var logType: String {get} -} - public protocol SocketLogger { /// Whether to log or not var log: Bool {get set} /// Normal log messages - func log(message: String, client: SocketLogClient, altType: String?, args: AnyObject...) + func log(message: String, client: AnyObject, altType: String?, args: AnyObject...) /// Error Messages - func err(message: String, client: SocketLogClient, altType: String?, args: AnyObject...) + func error(message: String, client: AnyObject, altType: String?, args: AnyObject...) } public extension SocketLogger { - func log(message: String, client: SocketLogClient, altType: String?, args: AnyObject...) { - if !log { - return - } - - let newArgs = args.map {arg -> CVarArgType in String(arg)} - let replaced = String(format: message, arguments: newArgs) - - NSLog("%@: %@", altType ?? client.logType, replaced) + func log(message: String, client: AnyObject, altType: String?, args: AnyObject...) { + abstractLog("Log", message: message, client: client, altType: altType, args: args) } - func err(message: String, client: SocketLogClient, altType: String?, args: AnyObject...) { - if !log { - return - } + func error(message: String, client: AnyObject, altType: String?, args: AnyObject...) { + abstractLog("ERROR", message: message, client: client, altType: altType, args: args) + + } + + private func abstractLog(type:String, message: String, client: AnyObject, altType: String?, args:Array) { + guard log else { return } let newArgs = args.map {arg -> CVarArgType in String(arg)} let replaced = String(format: message, arguments: newArgs) - - NSLog("ERROR %@: %@", altType ?? client.logType, replaced) + let sourceString = NSStringFromClass(object_getClass(client)) + NSLog("%@ %@: %@",type, altType ?? sourceString, replaced) } } diff --git a/SocketIOClientSwift/SocketParser.swift b/SocketIOClientSwift/SocketParser.swift index e06681d..8f43d2d 100644 --- a/SocketIOClientSwift/SocketParser.swift +++ b/SocketIOClientSwift/SocketParser.swift @@ -210,7 +210,7 @@ class SocketParser { static func parseBinaryData(data: NSData, socket: SocketIOClient) { if socket.waitingData.count == 0 { - Logger.err("Got data when not remaking packet", client: socket, altType: "SocketParser") + Logger.error("Got data when not remaking packet", client: socket, altType: "SocketParser") return } From fe7fb3ea4eaa12f70243b03cc656e152774d969a Mon Sep 17 00:00:00 2001 From: Lukas Schmidt Date: Fri, 4 Sep 2015 13:49:56 +0200 Subject: [PATCH 2/3] improve status enum readability --- .../SocketIOClientStatus.swift | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/SocketIOClientSwift/SocketIOClientStatus.swift b/SocketIOClientSwift/SocketIOClientStatus.swift index 0dfac8a..db9f959 100644 --- a/SocketIOClientSwift/SocketIOClientStatus.swift +++ b/SocketIOClientSwift/SocketIOClientStatus.swift @@ -26,24 +26,18 @@ import Foundation @objc public enum SocketIOClientStatus: Int, CustomStringConvertible { public var description: String { - let des: String - - switch rawValue { - case 0: - des = "Not Connected" - case 1: - des = "Closed" - case 2: - des = "Connecting" - case 3: - des = "Connected" - case 4: - des = "Reconnecting" - default: - des = "Unknown State" + switch self { + case NotConnected: + return "Not Connected" + case Closed: + return "Closed" + case Connecting: + return "Connecting" + case Connected: + return "Connected" + case Reconnecting: + return "Reconnecting" } - - return des } case NotConnected, Closed, Connecting, Connected, Reconnecting From f32c0850ac76ee6d442b206895b9adb58d57f17a Mon Sep 17 00:00:00 2001 From: Lukas Schmidt Date: Fri, 4 Sep 2015 14:51:08 +0200 Subject: [PATCH 3/3] missing code --- SocketIO-iOSTests/AbstractSocketTest.swift | 4 +++- SocketIO-iOSTests/SocketAcknowledgementTest.swift | 2 ++ SocketIO-iOSTests/SocketEmitTest.swift | 2 ++ SocketIO-iOSTests/SocketNamespaceAcknowledgementTest.swift | 2 ++ SocketIO-iOSTests/SocketNamespaceEmitTest.swift | 2 ++ 5 files changed, 11 insertions(+), 1 deletion(-) diff --git a/SocketIO-iOSTests/AbstractSocketTest.swift b/SocketIO-iOSTests/AbstractSocketTest.swift index 62c6e7a..1fd61c2 100644 --- a/SocketIO-iOSTests/AbstractSocketTest.swift +++ b/SocketIO-iOSTests/AbstractSocketTest.swift @@ -9,7 +9,8 @@ import XCTest class AbstractSocketTest: XCTestCase { - static let serverURL = "milkbartube.com:6979" + static let testLocal = false + static let serverURL = AbstractSocketTest.testLocal ? "localhost:6979" : "milkbartube.com:6979" static let TEST_TIMEOUT = 8.0 static var socket:SocketIOClient! var testKind:TestKind? @@ -22,6 +23,7 @@ class AbstractSocketTest: XCTestCase { XCTAssertTrue(AbstractSocketTest.socket.status == SocketIOClientStatus.NotConnected) AbstractSocketTest.socket.on("connect") {data, ack in XCTAssertEqual(AbstractSocketTest.socket.status, SocketIOClientStatus.Connected) + XCTAssertFalse(AbstractSocketTest.socket.secure) if let expection = expection { expection.fulfill() } diff --git a/SocketIO-iOSTests/SocketAcknowledgementTest.swift b/SocketIO-iOSTests/SocketAcknowledgementTest.swift index 045d32e..0f1f425 100644 --- a/SocketIO-iOSTests/SocketAcknowledgementTest.swift +++ b/SocketIO-iOSTests/SocketAcknowledgementTest.swift @@ -21,6 +21,8 @@ class SocketAcknowledgementTest: AbstractSocketTest { "forcePolling": false, "forceWebsockets": false,// default false "path": ""]) + }else { + AbstractSocketTest.socket.leaveNamespace() } openConnection() diff --git a/SocketIO-iOSTests/SocketEmitTest.swift b/SocketIO-iOSTests/SocketEmitTest.swift index 958f241..5e58491 100644 --- a/SocketIO-iOSTests/SocketEmitTest.swift +++ b/SocketIO-iOSTests/SocketEmitTest.swift @@ -22,6 +22,8 @@ class SocketEmitTest: AbstractSocketTest { "forceWebsockets": false,// default false "path": ""] ) + }else { + AbstractSocketTest.socket.leaveNamespace() } openConnection() diff --git a/SocketIO-iOSTests/SocketNamespaceAcknowledgementTest.swift b/SocketIO-iOSTests/SocketNamespaceAcknowledgementTest.swift index a7ae5b9..a0604f3 100644 --- a/SocketIO-iOSTests/SocketNamespaceAcknowledgementTest.swift +++ b/SocketIO-iOSTests/SocketNamespaceAcknowledgementTest.swift @@ -22,6 +22,8 @@ class SocketNamespaceAcknowledgementTest: AbstractSocketTest { "forceWebsockets": false,// default false "path": "", "nsp": "/swift"]) + }else { + AbstractSocketTest.socket.joinNamespace("/swift") } openConnection() diff --git a/SocketIO-iOSTests/SocketNamespaceEmitTest.swift b/SocketIO-iOSTests/SocketNamespaceEmitTest.swift index cac2fe9..e02ede3 100644 --- a/SocketIO-iOSTests/SocketNamespaceEmitTest.swift +++ b/SocketIO-iOSTests/SocketNamespaceEmitTest.swift @@ -22,6 +22,8 @@ class SocketNamespaceEmitTest: AbstractSocketTest { "forceWebsockets": false,// default false "path": "", "nsp": "/swift"]) + }else { + AbstractSocketTest.socket.joinNamespace("/swift") } openConnection()