change logging

This commit is contained in:
Erik 2015-09-04 09:41:40 -04:00
parent 0cfdd0b005
commit ac023013d4
4 changed files with 68 additions and 67 deletions

View File

@ -29,11 +29,12 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
private typealias ProbeWaitQueue = [Probe]
private let allowedCharacterSet = NSCharacterSet(charactersInString: "!*'();:@&=+$,/?%#[]\" {}").invertedSet
private let workQueue = NSOperationQueue()
private let emitQueue = dispatch_queue_create("engineEmitQueue", DISPATCH_QUEUE_SERIAL)
private let parseQueue = dispatch_queue_create("engineParseQueue", DISPATCH_QUEUE_SERIAL)
private let handleQueue = dispatch_queue_create("engineHandleQueue", DISPATCH_QUEUE_SERIAL)
private let logType = "SocketEngine"
private let parseQueue = dispatch_queue_create("engineParseQueue", DISPATCH_QUEUE_SERIAL)
private let session: NSURLSession!
private let workQueue = NSOperationQueue()
private var closed = false
private var extraHeaders: [String: String]?
@ -96,11 +97,11 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
}
deinit {
Logger.log("Engine is being deinit", client: self, altType: nil)
Logger.log("Engine is being deinit", type: logType)
}
public func close(fast fast: Bool) {
Logger.log("Engine is being closed. Fast: %@", client: self, altType: nil, args: fast)
Logger.log("Engine is being closed. Fast: %@", type: logType, args: fast)
pingTimer?.invalidate()
closed = true
@ -198,7 +199,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
private func doFastUpgrade() {
if waitingForPoll {
Logger.error("Outstanding poll when switched to WebSockets," +
"we'll probably disconnect soon. You should report this.", client: self, altType: nil)
"we'll probably disconnect soon. You should report this.", type: logType)
}
sendWebSocketMessage("", withType: PacketType.Upgrade, datas: nil)
@ -238,7 +239,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
req.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData
Logger.log("Doing polling request", client: self, altType: nil)
Logger.log("Doing polling request", type: logType)
session.dataTaskWithRequest(req) {[weak self] data, res, err in
if let this = self {
@ -246,12 +247,12 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
if this.polling {
this.handlePollingFailed(err?.localizedDescription ?? "Error")
} else {
Logger.error(err?.localizedDescription ?? "Error", client: this, altType: nil)
Logger.error(err?.localizedDescription ?? "Error", type: this.logType)
}
return
}
Logger.log("Got polling response", client: this, altType: nil)
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
@ -270,7 +271,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
}
private func flushProbeWait() {
Logger.log("Flushing probe wait", client: self, altType: nil)
Logger.log("Flushing probe wait", type: logType)
dispatch_async(emitQueue) {[weak self] in
if let this = self {
@ -323,7 +324,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
waitingForPost = true
Logger.log("POSTing: %@", client: self, altType: nil, args: postStr)
Logger.log("POSTing: %@", type: logType, args: postStr)
session.dataTaskWithRequest(req) {[weak self] data, res, err in
if let this = self {
@ -410,7 +411,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
}
}
} catch {
Logger.error("Error parsing open packet", client: self, altType: nil)
Logger.error("Error parsing open packet", type: logType)
return
}
@ -446,14 +447,14 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
public func open(opts: [String: AnyObject]? = nil) {
if connected {
Logger.error("Tried to open while connected", client: self, altType: nil)
Logger.error("Tried to open while connected", type: logType)
client?.didError("Tried to open while connected")
return
}
Logger.log("Starting engine", client: self, altType: nil)
Logger.log("Handshaking", client: self, altType: nil)
Logger.log("Starting engine", type: logType)
Logger.log("Handshaking", type: logType)
closed = false
@ -510,7 +511,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
length += chr
} else {
if length == "" || testLength(length, n: &n) {
Logger.error("Parsing error: %@", client: self, altType: nil, args: str)
Logger.error("Parsing error: %@", type: logType, args: str)
handlePollingFailed("Error parsing XHR message")
return
}
@ -518,7 +519,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
msg = String(strArray[i+1...i+n])
if let lengthInt = Int(length) where lengthInt != msg.characters.count {
Logger.error("Parsing error: %@", client: self, altType: nil, args: str)
Logger.error("Parsing error: %@", type: logType, args: str)
return
}
@ -540,7 +541,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
}
private func parseEngineMessage(var message: String, fromPolling: Bool) {
Logger.log("Got message: %@", client: self, altType: nil, args: message)
Logger.log("Got message: %@", type: logType, args: message)
if fromPolling {
fixDoubleUTF8(&message)
@ -565,7 +566,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
case PacketType.Close:
handleClose()
default:
Logger.log("Got unknown packet type", client: self, altType: nil)
Logger.log("Got unknown packet type", type: logType)
}
}
@ -600,7 +601,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
/// Only call on emitQueue
private func sendPollMessage(var msg: String, withType type: PacketType,
datas:[NSData]? = nil) {
Logger.log("Sending poll: %@ as type: %@", client: self, altType: nil, args: msg, type.rawValue)
Logger.log("Sending poll: %@ as type: %@", type: logType, args: msg, type.rawValue)
doubleEncodeUTF8(&msg)
let strMsg = "\(type.rawValue)\(msg)"
@ -624,7 +625,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
/// Only call on emitQueue
private func sendWebSocketMessage(str: String, withType type: PacketType,
datas:[NSData]? = nil) {
Logger.log("Sending ws: %@ as type: %@", client: self, altType: nil, args: str, type.rawValue)
Logger.log("Sending ws: %@ as type: %@", type: logType, args: str, type.rawValue)
ws?.writeString("\(type.rawValue)\(str)")
@ -659,7 +660,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
private func upgradeTransport() {
if websocketConnected {
Logger.log("Upgrading transport to WebSockets", client: self, altType: nil)
Logger.log("Upgrading transport to WebSockets", type: logType)
fastUpgrade = true
sendPollMessage("", withType: PacketType.Noop)
@ -674,12 +675,12 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
dispatch_async(emitQueue) {[weak self] in
if let this = self where this.connected {
if this.websocket {
Logger.log("Writing ws: %@ has data: %@", client: this, altType: nil,
args: msg, data == nil ? false : true)
Logger.log("Writing ws: %@ has data: %@", type: this.logType, args: msg,
data == nil ? false : true)
this.sendWebSocketMessage(msg, withType: type, datas: data)
} else {
Logger.log("Writing poll: %@ has data: %@", client: this, altType: nil,
args: msg, data == nil ? false : true)
Logger.log("Writing poll: %@ has data: %@", type: this.logType, args: msg,
data == nil ? false : true)
this.sendPollMessage(msg, withType: type, datas: data)
}
}

View File

@ -25,17 +25,6 @@
import Foundation
public final class SocketIOClient: NSObject, SocketEngineClient {
private var anyHandler: ((SocketAnyEvent) -> Void)?
private var currentReconnectAttempt = 0
private var handlers = ContiguousArray<SocketEventHandler>()
private var connectParams: [String: AnyObject]?
private var reconnectTimer: NSTimer?
let reconnectAttempts: Int!
var ackHandlers = SocketAckManager()
var currentAck = -1
var waitingData = [SocketPacket]()
public let emitQueue = dispatch_queue_create("emitQueue", DISPATCH_QUEUE_SERIAL)
public let handleQueue: dispatch_queue_t!
public let socketURL: String
@ -52,6 +41,19 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
return engine?.sid
}
private let logType = "SocketIOClient"
private var anyHandler: ((SocketAnyEvent) -> Void)?
private var currentReconnectAttempt = 0
private var handlers = ContiguousArray<SocketEventHandler>()
private var connectParams: [String: AnyObject]?
private var reconnectTimer: NSTimer?
let reconnectAttempts: Int!
var ackHandlers = SocketAckManager()
var currentAck = -1
var waitingData = [SocketPacket]()
/**
Create a new SocketIOClient. opts can be omitted
*/
@ -106,12 +108,12 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
}
deinit {
Logger.log("Client is being deinit", client: self, altType: nil)
Logger.log("Client is being deinit", type: logType)
engine?.close(fast: true)
}
private func addEngine() {
Logger.log("Adding engine", client: self, altType: nil)
Logger.log("Adding engine", type: logType)
engine = SocketEngine(client: self, opts: opts)
}
@ -127,7 +129,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
Pass true to fast if you're closing from a background task
*/
public func close(fast fast: Bool) {
Logger.log("Closing socket", client: self, altType: nil)
Logger.log("Closing socket", type: logType)
reconnects = false
status = SocketIOClientStatus.Closed
@ -151,7 +153,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
}
if status == SocketIOClientStatus.Closed {
Logger.log("Warning! This socket was previously closed. This might be dangerous!",
client: self, altType: nil)
type: logType)
}
status = SocketIOClientStatus.Connecting
@ -195,7 +197,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
}
func didConnect() {
Logger.log("Socket connected", client: self, altType: nil)
Logger.log("Socket connected", type: logType)
status = SocketIOClientStatus.Connected
currentReconnectAttempt = 0
clearReconnectTimer()
@ -210,7 +212,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
return
}
Logger.log("Disconnected: %@", client: self, altType: nil, args: reason)
Logger.log("Disconnected: %@", type: logType, args: reason)
status = SocketIOClientStatus.Closed
@ -223,7 +225,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
/// error
public func didError(reason: AnyObject) {
Logger.error("%@", client: self, altType: nil, args: reason)
Logger.error("%@", type: logType, args: reason)
handleEvent("error", data: reason as? [AnyObject] ?? [reason],
isInternalMessage: true)
@ -279,7 +281,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: %@", client: self, altType: nil, args: str)
Logger.log("Emitting: %@", type: logType, args: str)
if packet.type == SocketPacket.PacketType.BinaryEvent {
engine?.send(str, withData: packet.binary)
@ -295,7 +297,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
let packet = SocketPacket.packetFromEmit(items, id: ack ?? -1, nsp: this.nsp, ack: true)
let str = packet.packetString
Logger.log("Emitting Ack: %@", client: this, altType: nil, args: str)
Logger.log("Emitting Ack: %@", type: this.logType, args: str)
if packet.type == SocketPacket.PacketType.BinaryAck {
this.engine?.send(str, withData: packet.binary)
@ -321,8 +323,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
// Called when the socket gets an ack for something it sent
func handleAck(ack: Int, data: AnyObject?) {
Logger.log("Handling ack: %@ with data: %@", client: self,
altType: nil, args: ack, data ?? "")
Logger.log("Handling ack: %@ with data: %@", type: logType, args: ack, data ?? "")
ackHandlers.executeAck(ack,
items: (data as? [AnyObject]?) ?? (data != nil ? [data!] : nil))
@ -338,8 +339,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
}
// println("Should do event: \(event) with data: \(data)")
Logger.log("Handling event: %@ with data: %@", client: self,
altType: nil, args: event, data ?? "")
Logger.log("Handling event: %@ with data: %@", type: logType, args: event, data ?? "")
if anyHandler != nil {
dispatch_async(handleQueue) {[weak self] in
@ -374,7 +374,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
Joins nsp if it is not /
*/
public func joinNamespace() {
Logger.log("Joining namespace", client: self, altType: nil)
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: %@", client: self, altType: nil, args: event)
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: %@", client: self, altType: nil, args: event)
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 handler for an event.
*/
public func onObjectiveC(event: String, callback: NormalCallbackObjectiveC) {
Logger.log("Adding handler for event: %@", client: self, altType: nil, args: event)
Logger.log("Adding handler for event: %@", type: logType, args: event)
let handler = SocketEventHandler(event: event, callback: callback)
handlers.append(handler)
@ -466,7 +466,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
private func tryReconnect() {
if reconnectTimer == nil {
Logger.log("Starting reconnect", client: self, altType: nil)
Logger.log("Starting reconnect", type: logType)
status = SocketIOClientStatus.Reconnecting
@ -494,7 +494,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
return
}
Logger.log("Trying to reconnect", client: self, altType: nil)
Logger.log("Trying to reconnect", type: logType)
handleEvent("reconnectAttempt", data: [reconnectAttempts - currentReconnectAttempt],
isInternalMessage: true)

View File

@ -31,29 +31,29 @@ public protocol SocketLogger {
var log: Bool {get set}
/// Normal log messages
func log(message: String, client: AnyObject, altType: String?, args: AnyObject...)
func log(message: String, type: String, args: AnyObject...)
/// Error Messages
func error(message: String, client: AnyObject, altType: String?, args: AnyObject...)
func error(message: String, type: String, args: AnyObject...)
}
public extension SocketLogger {
func log(message: String, client: AnyObject, altType: String?, args: AnyObject...) {
abstractLog("Log", message: message, client: client, altType: altType, args: args)
func log(message: String, type: String, args: AnyObject...) {
abstractLog("Log", message: message, type: type, args: args)
}
func error(message: String, client: AnyObject, altType: String?, args: AnyObject...) {
abstractLog("ERROR", message: message, client: client, altType: altType, args: args)
func error(message: String, type: String, args: AnyObject...) {
abstractLog("ERROR", message: message, type: type, args: args)
}
private func abstractLog(type:String, message: String, client: AnyObject, altType: String?, args:Array<AnyObject>) {
private func abstractLog(logType: String, message: String, type: String, args: [AnyObject]) {
guard log else { return }
let newArgs = args.map {arg -> CVarArgType in String(arg)}
let replaced = String(format: message, arguments: newArgs)
let sourceString = NSStringFromClass(object_getClass(client))
NSLog("%@ %@: %@",type, altType ?? sourceString, replaced)
NSLog("%@ %@: %@", logType, type, replaced)
}
}

View File

@ -177,7 +177,7 @@ class SocketParser {
return
}
Logger.log("Parsing %@", client: socket, altType: "SocketParser", args: stringMessage)
Logger.log("Parsing %@", type: "SocketParser", args: stringMessage)
let p: SocketPacket
@ -188,7 +188,7 @@ class SocketParser {
return
}
Logger.log("Decoded packet as: %@", client: socket, altType: "SocketParser", args: p.description)
Logger.log("Decoded packet as: %@", type: "SocketParser", args: p.description)
switch p.type {
case SocketPacket.PacketType.Event:
@ -210,7 +210,7 @@ class SocketParser {
static func parseBinaryData(data: NSData, socket: SocketIOClient) {
if socket.waitingData.count == 0 {
Logger.error("Got data when not remaking packet", client: socket, altType: "SocketParser")
Logger.error("Got data when not remaking packet", type: "SocketParser")
return
}