move Logger to static variable

This commit is contained in:
Erik 2015-11-04 17:19:45 -05:00
parent fe21fcc7e1
commit 0de8a65ff4
5 changed files with 49 additions and 48 deletions

View File

@ -116,7 +116,7 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
} }
deinit { deinit {
Logger.log("Engine is being deinit", type: logType) DefaultSocketLogger.Logger.log("Engine is being deinit", type: logType)
closed = true closed = true
stopPolling() stopPolling()
} }
@ -135,7 +135,7 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
} }
public func close() { public func close() {
Logger.log("Engine is being closed.", type: logType) DefaultSocketLogger.Logger.log("Engine is being closed.", type: logType)
pingTimer?.invalidate() pingTimer?.invalidate()
closed = true closed = true
@ -234,7 +234,7 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
private func doFastUpgrade() { private func doFastUpgrade() {
if waitingForPoll { 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) "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() { private func flushProbeWait() {
Logger.log("Flushing probe wait", type: logType) DefaultSocketLogger.Logger.log("Flushing probe wait", type: logType)
dispatch_async(emitQueue) {[weak self] in dispatch_async(emitQueue) {[weak self] in
if let this = self { if let this = self {
@ -305,7 +305,7 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
} }
} }
} catch { } catch {
Logger.error("Error parsing open packet", type: logType) DefaultSocketLogger.Logger.error("Error parsing open packet", type: logType)
return return
} }
@ -341,14 +341,14 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
public func open(opts: [String: AnyObject]? = nil) { public func open(opts: [String: AnyObject]? = nil) {
if connected { 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") client?.didError("Tried to open while connected")
return return
} }
Logger.log("Starting engine", type: logType) DefaultSocketLogger.Logger.log("Starting engine", type: logType)
Logger.log("Handshaking", type: logType) DefaultSocketLogger.Logger.log("Handshaking", type: logType)
closed = false closed = false
@ -378,12 +378,12 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
} }
private func parseEngineData(data: NSData) { 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))) client?.parseBinaryData(data.subdataWithRange(NSMakeRange(1, data.length - 1)))
} }
private func parseEngineMessage(var message: String, fromPolling: Bool) { 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) ?? { let type = SocketEnginePacketType(rawValue: Int((message["^(\\d)"].groups()?[1]) ?? "") ?? -1) ?? {
self.checkIfMessageIsBase64Binary(message) self.checkIfMessageIsBase64Binary(message)
@ -408,7 +408,7 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
case .Close: case .Close:
handleClose() handleClose()
default: 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() { private func upgradeTransport() {
if websocketConnected { if websocketConnected {
Logger.log("Upgrading transport to WebSockets", type: logType) DefaultSocketLogger.Logger.log("Upgrading transport to WebSockets", type: logType)
fastUpgrade = true fastUpgrade = true
sendPollMessage("", withType: .Noop) sendPollMessage("", withType: .Noop)
@ -469,11 +469,11 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
dispatch_async(emitQueue) { dispatch_async(emitQueue) {
if self.connected { if self.connected {
if self.websocket { 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) data == nil ? false : true)
self.sendWebSocketMessage(msg, withType: type, datas: data) self.sendWebSocketMessage(msg, withType: type, datas: data)
} else { } 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) data == nil ? false : true)
self.sendPollMessage(msg, withType: type, datas: data) self.sendPollMessage(msg, withType: type, datas: data)
} }
@ -512,7 +512,7 @@ extension SocketEngine {
return return
} }
Logger.log("Doing polling request", type: logType) DefaultSocketLogger.Logger.log("Doing polling request", type: logType)
req.cachePolicy = .ReloadIgnoringLocalAndRemoteCacheData req.cachePolicy = .ReloadIgnoringLocalAndRemoteCacheData
session.dataTaskWithRequest(req, completionHandler: callback).resume() session.dataTaskWithRequest(req, completionHandler: callback).resume()
@ -525,12 +525,12 @@ extension SocketEngine {
if this.polling { if this.polling {
this.handlePollingFailed(err?.localizedDescription ?? "Error") this.handlePollingFailed(err?.localizedDescription ?? "Error")
} else { } else {
Logger.error(err?.localizedDescription ?? "Error", type: this.logType) DefaultSocketLogger.Logger.error(err?.localizedDescription ?? "Error", type: this.logType)
} }
return 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 { if let str = NSString(data: data!, encoding: NSUTF8StringEncoding) as? String {
dispatch_async(this.parseQueue) {[weak this] in dispatch_async(this.parseQueue) {[weak this] in
@ -585,7 +585,7 @@ extension SocketEngine {
waitingForPost = true 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 doRequest(req) {[weak self] data, res, err in
if let this = self { if let this = self {
@ -593,7 +593,7 @@ extension SocketEngine {
this.handlePollingFailed(err?.localizedDescription ?? "Error") this.handlePollingFailed(err?.localizedDescription ?? "Error")
return return
} else if err != nil { } else if err != nil {
Logger.error(err?.localizedDescription ?? "Error", type: this.logType) DefaultSocketLogger.Logger.error(err?.localizedDescription ?? "Error", type: this.logType)
return return
} }
@ -648,7 +648,7 @@ extension SocketEngine {
/// Only call on emitQueue /// Only call on emitQueue
private func sendPollMessage(var msg: String, withType type: SocketEnginePacketType, private func sendPollMessage(var msg: String, withType type: SocketEnginePacketType,
datas:[NSData]? = nil) { 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) doubleEncodeUTF8(&msg)
let strMsg = "\(type.rawValue)\(msg)" let strMsg = "\(type.rawValue)\(msg)"
@ -678,7 +678,7 @@ extension SocketEngine {
/// Only call on emitQueue /// Only call on emitQueue
private func sendWebSocketMessage(str: String, withType type: SocketEnginePacketType, private func sendWebSocketMessage(str: String, withType type: SocketEnginePacketType,
datas:[NSData]? = nil) { 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)") ws?.writeString("\(type.rawValue)\(str)")

View File

@ -84,9 +84,9 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
case .Nsp(let nsp): case .Nsp(let nsp):
self.nsp = nsp self.nsp = nsp
case .Log(let log): case .Log(let log):
Logger.log = log DefaultSocketLogger.Logger.log = log
case .Logger(let logger): case .Logger(let logger):
Logger = logger DefaultSocketLogger.Logger = logger
case .HandleQueue(let queue): case .HandleQueue(let queue):
handleQueue = queue handleQueue = queue
default: default:
@ -109,12 +109,12 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
} }
deinit { deinit {
Logger.log("Client is being deinit", type: logType) DefaultSocketLogger.Logger.log("Client is being deinit", type: logType)
engine?.close() engine?.close()
} }
private func addEngine() -> SocketEngine { 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 ?? []) 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 Pass true to fast if you're closing from a background task
*/ */
public func close() { public func close() {
Logger.log("Closing socket", type: logType) DefaultSocketLogger.Logger.log("Closing socket", type: logType)
reconnects = false reconnects = false
didDisconnect("Closed") didDisconnect("Closed")
@ -158,7 +158,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
} }
if status == .Closed { 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) type: logType)
} }
@ -202,7 +202,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
} }
func didConnect() { func didConnect() {
Logger.log("Socket connected", type: logType) DefaultSocketLogger.Logger.log("Socket connected", type: logType)
status = .Connected status = .Connected
currentReconnectAttempt = 0 currentReconnectAttempt = 0
clearReconnectTimer() clearReconnectTimer()
@ -217,7 +217,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
return return
} }
Logger.log("Disconnected: %@", type: logType, args: reason) DefaultSocketLogger.Logger.log("Disconnected: %@", type: logType, args: reason)
status = .Closed status = .Closed
reconnects = false reconnects = false
@ -229,7 +229,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
/// error /// error
public func didError(reason: AnyObject) { 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], handleEvent("error", data: reason as? [AnyObject] ?? [reason],
isInternalMessage: true) 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 packet = SocketPacket.packetFromEmit(data, id: ack ?? -1, nsp: nsp, ack: false)
let str = packet.packetString let str = packet.packetString
Logger.log("Emitting: %@", type: logType, args: str) DefaultSocketLogger.Logger.log("Emitting: %@", type: logType, args: str)
if packet.type == .BinaryEvent { if packet.type == .BinaryEvent {
engine?.send(str, withData: packet.binary) 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 packet = SocketPacket.packetFromEmit(items, id: ack ?? -1, nsp: self.nsp, ack: true)
let str = packet.packetString 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 { if packet.type == SocketPacket.PacketType.BinaryAck {
self.engine?.send(str, withData: packet.binary) self.engine?.send(str, withData: packet.binary)
@ -329,7 +329,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
func handleAck(ack: Int, data: AnyObject?) { func handleAck(ack: Int, data: AnyObject?) {
guard status == .Connected else {return} 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, ackHandlers.executeAck(ack,
items: (data as? [AnyObject]) ?? (data != nil ? [data!] : [])) items: (data as? [AnyObject]) ?? (data != nil ? [data!] : []))
@ -344,7 +344,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
return 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) { dispatch_async(handleQueue) {
self.anyHandler?(SocketAnyEvent(event: event, items: data)) self.anyHandler?(SocketAnyEvent(event: event, items: data))
@ -374,7 +374,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
Joins nsp if it is not / Joins nsp if it is not /
*/ */
public func joinNamespace() { public func joinNamespace() {
Logger.log("Joining namespace", type: logType) DefaultSocketLogger.Logger.log("Joining namespace", type: logType)
if nsp != "/" { if nsp != "/" {
engine?.send("0\(nsp)", withData: nil) engine?.send("0\(nsp)", withData: nil)
@ -393,7 +393,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
Removes handler(s) Removes handler(s)
*/ */
public func off(event: String) { 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 }) handlers = ContiguousArray(handlers.filter { $0.event != event })
} }
@ -402,7 +402,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
Adds a handler for an event. Adds a handler for an event.
*/ */
public func on(event: String, callback: NormalCallback) { 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) let handler = SocketEventHandler(event: event, callback: callback)
handlers.append(handler) handlers.append(handler)
@ -412,7 +412,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
Adds a single-use handler for an event. Adds a single-use handler for an event.
*/ */
public func once(event: String, callback: NormalCallback) { 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() let id = NSUUID()
@ -468,7 +468,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
private func tryReconnect() { private func tryReconnect() {
if reconnectTimer == nil { if reconnectTimer == nil {
Logger.log("Starting reconnect", type: logType) DefaultSocketLogger.Logger.log("Starting reconnect", type: logType)
status = .Reconnecting status = .Reconnecting
@ -493,7 +493,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
return return
} }
Logger.log("Trying to reconnect", type: logType) DefaultSocketLogger.Logger.log("Trying to reconnect", type: logType)
handleEvent("reconnectAttempt", data: [reconnectAttempts - currentReconnectAttempt], handleEvent("reconnectAttempt", data: [reconnectAttempts - currentReconnectAttempt],
isInternalMessage: true) isInternalMessage: true)

View File

@ -24,8 +24,6 @@
import Foundation import Foundation
var Logger: SocketLogger = DefaultSocketLogger()
public protocol SocketLogger: class { public protocol SocketLogger: class {
/// Whether to log or not /// Whether to log or not
var log: Bool {get set} var log: Bool {get set}
@ -57,5 +55,7 @@ public extension SocketLogger {
} }
class DefaultSocketLogger: SocketLogger { class DefaultSocketLogger: SocketLogger {
static var Logger: SocketLogger = DefaultSocketLogger()
var log = false var log = false
} }

View File

@ -109,7 +109,8 @@ struct SocketPacket {
message += jsonString! as String + "," message += jsonString! as String + ","
} catch { } 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 { } else if var str = arg as? String {
str = str["\n"] ~= "\\\\n" str = str["\n"] ~= "\\\\n"

View File

@ -56,7 +56,7 @@ class SocketParser {
case .Error: case .Error:
socket.didError(pack.data) socket.didError(pack.data)
default: 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) { static func parseSocketMessage(message: String, socket: SocketIOClient) {
guard !message.isEmpty else { return } guard !message.isEmpty else { return }
Logger.log("Parsing %@", type: "SocketParser", args: message) DefaultSocketLogger.Logger.log("Parsing %@", type: "SocketParser", args: message)
switch parseString(message) { switch parseString(message) {
case .Left(let err): case .Left(let err):
Logger.error("\(err): %@", type: "SocketParser", args: message) DefaultSocketLogger.Logger.error("\(err): %@", type: "SocketParser", args: message)
case .Right(let pack): 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) handlePacket(pack, withSocket: socket)
} }
} }
static func parseBinaryData(data: NSData, socket: SocketIOClient) { static func parseBinaryData(data: NSData, socket: SocketIOClient) {
guard !socket.waitingData.isEmpty else { 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 return
} }