diff --git a/SocketIOClientSwift/SocketEngine.swift b/SocketIOClientSwift/SocketEngine.swift index 4319feb..704b53c 100644 --- a/SocketIOClientSwift/SocketEngine.swift +++ b/SocketIOClientSwift/SocketEngine.swift @@ -116,7 +116,7 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate { } deinit { - Logger.log("Engine is being deinit", type: logType) + DefaultSocketLogger.Logger.log("Engine is being deinit", type: logType) closed = true stopPolling() } @@ -135,7 +135,7 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate { } public func close() { - Logger.log("Engine is being closed.", type: logType) + DefaultSocketLogger.Logger.log("Engine is being closed.", type: logType) pingTimer?.invalidate() closed = true @@ -234,7 +234,7 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate { private func doFastUpgrade() { if waitingForPoll { - Logger.error("Outstanding poll when switched to WebSockets," + + DefaultSocketLogger.Logger.error("Outstanding poll when switched to WebSockets," + "we'll probably disconnect soon. You should report this.", type: logType) } @@ -247,7 +247,7 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate { } private func flushProbeWait() { - Logger.log("Flushing probe wait", type: logType) + DefaultSocketLogger.Logger.log("Flushing probe wait", type: logType) dispatch_async(emitQueue) {[weak self] in if let this = self { @@ -305,7 +305,7 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate { } } } catch { - Logger.error("Error parsing open packet", type: logType) + DefaultSocketLogger.Logger.error("Error parsing open packet", type: logType) return } @@ -341,14 +341,14 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate { public func open(opts: [String: AnyObject]? = nil) { if connected { - Logger.error("Tried to open while connected", type: logType) + DefaultSocketLogger.Logger.error("Tried to open while connected", type: logType) client?.didError("Tried to open while connected") return } - Logger.log("Starting engine", type: logType) - Logger.log("Handshaking", type: logType) + DefaultSocketLogger.Logger.log("Starting engine", type: logType) + DefaultSocketLogger.Logger.log("Handshaking", type: logType) closed = false @@ -378,12 +378,12 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate { } private func parseEngineData(data: NSData) { - Logger.log("Got binary data: %@", type: "SocketEngine", args: data) + DefaultSocketLogger.Logger.log("Got binary data: %@", type: "SocketEngine", args: data) client?.parseBinaryData(data.subdataWithRange(NSMakeRange(1, data.length - 1))) } private func parseEngineMessage(var message: String, fromPolling: Bool) { - Logger.log("Got message: %@", type: logType, args: message) + DefaultSocketLogger.Logger.log("Got message: %@", type: logType, args: message) let type = SocketEnginePacketType(rawValue: Int((message["^(\\d)"].groups()?[1]) ?? "") ?? -1) ?? { self.checkIfMessageIsBase64Binary(message) @@ -408,7 +408,7 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate { case .Close: handleClose() default: - Logger.log("Got unknown packet type", type: logType) + DefaultSocketLogger.Logger.log("Got unknown packet type", type: logType) } } @@ -454,7 +454,7 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate { private func upgradeTransport() { if websocketConnected { - Logger.log("Upgrading transport to WebSockets", type: logType) + DefaultSocketLogger.Logger.log("Upgrading transport to WebSockets", type: logType) fastUpgrade = true sendPollMessage("", withType: .Noop) @@ -469,11 +469,11 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate { dispatch_async(emitQueue) { if self.connected { if self.websocket { - Logger.log("Writing ws: %@ has data: %@", type: self.logType, args: msg, + DefaultSocketLogger.Logger.log("Writing ws: %@ has data: %@", type: self.logType, args: msg, data == nil ? false : true) self.sendWebSocketMessage(msg, withType: type, datas: data) } else { - Logger.log("Writing poll: %@ has data: %@", type: self.logType, args: msg, + DefaultSocketLogger.Logger.log("Writing poll: %@ has data: %@", type: self.logType, args: msg, data == nil ? false : true) self.sendPollMessage(msg, withType: type, datas: data) } @@ -512,7 +512,7 @@ extension SocketEngine { return } - Logger.log("Doing polling request", type: logType) + DefaultSocketLogger.Logger.log("Doing polling request", type: logType) req.cachePolicy = .ReloadIgnoringLocalAndRemoteCacheData session.dataTaskWithRequest(req, completionHandler: callback).resume() @@ -525,12 +525,12 @@ extension SocketEngine { if this.polling { this.handlePollingFailed(err?.localizedDescription ?? "Error") } else { - Logger.error(err?.localizedDescription ?? "Error", type: this.logType) + DefaultSocketLogger.Logger.error(err?.localizedDescription ?? "Error", type: this.logType) } return } - Logger.log("Got polling response", type: this.logType) + DefaultSocketLogger.Logger.log("Got polling response", type: this.logType) if let str = NSString(data: data!, encoding: NSUTF8StringEncoding) as? String { dispatch_async(this.parseQueue) {[weak this] in @@ -585,7 +585,7 @@ extension SocketEngine { waitingForPost = true - Logger.log("POSTing: %@", type: logType, args: postStr) + DefaultSocketLogger.Logger.log("POSTing: %@", type: logType, args: postStr) doRequest(req) {[weak self] data, res, err in if let this = self { @@ -593,7 +593,7 @@ extension SocketEngine { this.handlePollingFailed(err?.localizedDescription ?? "Error") return } else if err != nil { - Logger.error(err?.localizedDescription ?? "Error", type: this.logType) + DefaultSocketLogger.Logger.error(err?.localizedDescription ?? "Error", type: this.logType) return } @@ -648,7 +648,7 @@ extension SocketEngine { /// Only call on emitQueue private func sendPollMessage(var msg: String, withType type: SocketEnginePacketType, datas:[NSData]? = nil) { - Logger.log("Sending poll: %@ as type: %@", type: logType, args: msg, type.rawValue) + DefaultSocketLogger.Logger.log("Sending poll: %@ as type: %@", type: logType, args: msg, type.rawValue) doubleEncodeUTF8(&msg) let strMsg = "\(type.rawValue)\(msg)" @@ -678,7 +678,7 @@ extension SocketEngine { /// Only call on emitQueue private func sendWebSocketMessage(str: String, withType type: SocketEnginePacketType, datas:[NSData]? = nil) { - Logger.log("Sending ws: %@ as type: %@", type: logType, args: str, type.rawValue) + DefaultSocketLogger.Logger.log("Sending ws: %@ as type: %@", type: logType, args: str, type.rawValue) ws?.writeString("\(type.rawValue)\(str)") diff --git a/SocketIOClientSwift/SocketIOClient.swift b/SocketIOClientSwift/SocketIOClient.swift index cd52cf7..97db195 100644 --- a/SocketIOClientSwift/SocketIOClient.swift +++ b/SocketIOClientSwift/SocketIOClient.swift @@ -84,9 +84,9 @@ public final class SocketIOClient: NSObject, SocketEngineClient { case .Nsp(let nsp): self.nsp = nsp case .Log(let log): - Logger.log = log + DefaultSocketLogger.Logger.log = log case .Logger(let logger): - Logger = logger + DefaultSocketLogger.Logger = logger case .HandleQueue(let queue): handleQueue = queue default: @@ -109,12 +109,12 @@ public final class SocketIOClient: NSObject, SocketEngineClient { } deinit { - Logger.log("Client is being deinit", type: logType) + DefaultSocketLogger.Logger.log("Client is being deinit", type: logType) engine?.close() } private func addEngine() -> SocketEngine { - Logger.log("Adding engine", type: logType) + DefaultSocketLogger.Logger.log("Adding engine", type: logType) let newEngine = SocketEngine(client: self, url: socketURL, options: options ?? []) @@ -133,7 +133,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { Pass true to fast if you're closing from a background task */ public func close() { - Logger.log("Closing socket", type: logType) + DefaultSocketLogger.Logger.log("Closing socket", type: logType) reconnects = false didDisconnect("Closed") @@ -158,7 +158,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { } if status == .Closed { - Logger.log("Warning! This socket was previously closed. This might be dangerous!", + DefaultSocketLogger.Logger.log("Warning! This socket was previously closed. This might be dangerous!", type: logType) } @@ -202,7 +202,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { } func didConnect() { - Logger.log("Socket connected", type: logType) + DefaultSocketLogger.Logger.log("Socket connected", type: logType) status = .Connected currentReconnectAttempt = 0 clearReconnectTimer() @@ -217,7 +217,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { return } - Logger.log("Disconnected: %@", type: logType, args: reason) + DefaultSocketLogger.Logger.log("Disconnected: %@", type: logType, args: reason) status = .Closed reconnects = false @@ -229,7 +229,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { /// error public func didError(reason: AnyObject) { - Logger.error("%@", type: logType, args: reason) + DefaultSocketLogger.Logger.error("%@", type: logType, args: reason) handleEvent("error", data: reason as? [AnyObject] ?? [reason], isInternalMessage: true) @@ -285,7 +285,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { let packet = SocketPacket.packetFromEmit(data, id: ack ?? -1, nsp: nsp, ack: false) let str = packet.packetString - Logger.log("Emitting: %@", type: logType, args: str) + DefaultSocketLogger.Logger.log("Emitting: %@", type: logType, args: str) if packet.type == .BinaryEvent { engine?.send(str, withData: packet.binary) @@ -301,7 +301,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { let packet = SocketPacket.packetFromEmit(items, id: ack ?? -1, nsp: self.nsp, ack: true) let str = packet.packetString - Logger.log("Emitting Ack: %@", type: self.logType, args: str) + DefaultSocketLogger.Logger.log("Emitting Ack: %@", type: self.logType, args: str) if packet.type == SocketPacket.PacketType.BinaryAck { self.engine?.send(str, withData: packet.binary) @@ -329,7 +329,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { func handleAck(ack: Int, data: AnyObject?) { guard status == .Connected else {return} - Logger.log("Handling ack: %@ with data: %@", type: logType, args: ack, data ?? "") + DefaultSocketLogger.Logger.log("Handling ack: %@ with data: %@", type: logType, args: ack, data ?? "") ackHandlers.executeAck(ack, items: (data as? [AnyObject]) ?? (data != nil ? [data!] : [])) @@ -344,7 +344,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { return } - Logger.log("Handling event: %@ with data: %@", type: logType, args: event, data ?? "") + DefaultSocketLogger.Logger.log("Handling event: %@ with data: %@", type: logType, args: event, data ?? "") dispatch_async(handleQueue) { self.anyHandler?(SocketAnyEvent(event: event, items: data)) @@ -374,7 +374,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { Joins nsp if it is not / */ public func joinNamespace() { - Logger.log("Joining namespace", type: logType) + DefaultSocketLogger.Logger.log("Joining namespace", type: logType) if nsp != "/" { engine?.send("0\(nsp)", withData: nil) @@ -393,7 +393,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { Removes handler(s) */ public func off(event: String) { - Logger.log("Removing handler for event: %@", type: logType, args: event) + DefaultSocketLogger.Logger.log("Removing handler for event: %@", type: logType, args: event) handlers = ContiguousArray(handlers.filter { $0.event != event }) } @@ -402,7 +402,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { Adds a handler for an event. */ public func on(event: String, callback: NormalCallback) { - Logger.log("Adding handler for event: %@", type: logType, args: event) + DefaultSocketLogger.Logger.log("Adding handler for event: %@", type: logType, args: event) let handler = SocketEventHandler(event: event, callback: callback) handlers.append(handler) @@ -412,7 +412,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { Adds a single-use handler for an event. */ public func once(event: String, callback: NormalCallback) { - Logger.log("Adding once handler for event: %@", type: logType, args: event) + DefaultSocketLogger.Logger.log("Adding once handler for event: %@", type: logType, args: event) let id = NSUUID() @@ -468,7 +468,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { private func tryReconnect() { if reconnectTimer == nil { - Logger.log("Starting reconnect", type: logType) + DefaultSocketLogger.Logger.log("Starting reconnect", type: logType) status = .Reconnecting @@ -493,7 +493,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { return } - Logger.log("Trying to reconnect", type: logType) + DefaultSocketLogger.Logger.log("Trying to reconnect", type: logType) handleEvent("reconnectAttempt", data: [reconnectAttempts - currentReconnectAttempt], isInternalMessage: true) diff --git a/SocketIOClientSwift/SocketLogger.swift b/SocketIOClientSwift/SocketLogger.swift index b168820..d52f8d0 100644 --- a/SocketIOClientSwift/SocketLogger.swift +++ b/SocketIOClientSwift/SocketLogger.swift @@ -24,8 +24,6 @@ import Foundation -var Logger: SocketLogger = DefaultSocketLogger() - public protocol SocketLogger: class { /// Whether to log or not var log: Bool {get set} @@ -57,5 +55,7 @@ public extension SocketLogger { } class DefaultSocketLogger: SocketLogger { + static var Logger: SocketLogger = DefaultSocketLogger() + var log = false } diff --git a/SocketIOClientSwift/SocketPacket.swift b/SocketIOClientSwift/SocketPacket.swift index 96a8d31..36e964e 100644 --- a/SocketIOClientSwift/SocketPacket.swift +++ b/SocketIOClientSwift/SocketPacket.swift @@ -109,7 +109,8 @@ struct SocketPacket { message += jsonString! as String + "," } catch { - Logger.error("Error creating JSON object in SocketPacket.completeMessage", type: SocketPacket.logType) + DefaultSocketLogger.Logger.error("Error creating JSON object in SocketPacket.completeMessage", + type: SocketPacket.logType) } } else if var str = arg as? String { str = str["\n"] ~= "\\\\n" diff --git a/SocketIOClientSwift/SocketParser.swift b/SocketIOClientSwift/SocketParser.swift index 5f19577..86198c7 100644 --- a/SocketIOClientSwift/SocketParser.swift +++ b/SocketIOClientSwift/SocketParser.swift @@ -56,7 +56,7 @@ class SocketParser { case .Error: socket.didError(pack.data) default: - Logger.log("Got invalid packet: %@", type: "SocketParser", args: pack.description) + DefaultSocketLogger.Logger.log("Got invalid packet: %@", type: "SocketParser", args: pack.description) } } @@ -143,20 +143,20 @@ class SocketParser { static func parseSocketMessage(message: String, socket: SocketIOClient) { guard !message.isEmpty else { return } - Logger.log("Parsing %@", type: "SocketParser", args: message) + DefaultSocketLogger.Logger.log("Parsing %@", type: "SocketParser", args: message) switch parseString(message) { case .Left(let err): - Logger.error("\(err): %@", type: "SocketParser", args: message) + DefaultSocketLogger.Logger.error("\(err): %@", type: "SocketParser", args: message) case .Right(let pack): - Logger.log("Decoded packet as: %@", type: "SocketParser", args: pack.description) + DefaultSocketLogger.Logger.log("Decoded packet as: %@", type: "SocketParser", args: pack.description) handlePacket(pack, withSocket: socket) } } static func parseBinaryData(data: NSData, socket: SocketIOClient) { guard !socket.waitingData.isEmpty else { - Logger.error("Got data when not remaking packet", type: "SocketParser") + DefaultSocketLogger.Logger.error("Got data when not remaking packet", type: "SocketParser") return }