tweaks to once

This commit is contained in:
Erik 2015-09-17 23:52:23 -04:00
parent 70c7dacde9
commit 9a05f6043b
3 changed files with 20 additions and 14 deletions

View File

@ -143,6 +143,8 @@ Methods
11. `reconnect()` - Causes the client to reconnect to the server.
12. `joinNamespace()` - Causes the client to join nsp. Shouldn't need to be called unless you change nsp manually.
13. `leaveNamespace()` - Causes the client to leave the nsp and go back to /
14. `once(event: String, callback: NormalCallback)` - Adds a handler that will only be executed once.
15. `once(event event: String, callback: NormalCallbackObjectiveC)` - Adds a handler that will only be executed once.
Client Events
------

View File

@ -35,19 +35,21 @@ private func emitAckCallbackObjectiveC(socket: SocketIOClient?, num: Int?)
}
struct SocketEventHandler {
let id = NSUUID()
let event: String
let id: NSUUID
let callback: NormalCallback?
let callBackObjectiveC: NormalCallbackObjectiveC?
init(event: String, callback: NormalCallback) {
init(event: String, id: NSUUID = NSUUID(), callback: NormalCallback) {
self.event = event
self.id = id
self.callback = callback
self.callBackObjectiveC = nil
}
init(event: String, callback: NormalCallbackObjectiveC) {
init(event: String, id: NSUUID = NSUUID(), callback: NormalCallbackObjectiveC) {
self.event = event
self.id = id
self.callback = nil
self.callBackObjectiveC = callback
}

View File

@ -430,14 +430,15 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
public func once(event: String, callback: NormalCallback) {
Logger.log("Adding once handler for event: %@", type: logType, args: event)
var handler: SocketEventHandler?;
let id = NSUUID()
handler = SocketEventHandler(event: event) { (data, ack: AckEmitter?) in
self.handlers = ContiguousArray(self.handlers.filter { $0.id != handler!.id })
let handler = SocketEventHandler(event: event, id: id) {[weak self] (data, ack: AckEmitter?) in
guard let this = self else {return}
this.handlers = ContiguousArray(this.handlers.filter {$0.id != id})
callback(data, ack)
}
handlers.append(handler!)
handlers.append(handler)
}
/**
@ -446,14 +447,15 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
public func once(event event: String, callback: NormalCallbackObjectiveC) {
Logger.log("Adding once handler for event: %@", type: logType, args: event)
var handler: SocketEventHandler?;
let id = NSUUID()
handler = SocketEventHandler(event: event) { (data, ack: AckEmitterObjectiveC?) in
self.handlers = ContiguousArray(self.handlers.filter { $0.id != handler!.id })
let handler = SocketEventHandler(event: event, id: id) {[weak self] (data, ack: AckEmitterObjectiveC?) in
guard let this = self else {return}
this.handlers = ContiguousArray(this.handlers.filter {$0.id != id})
callback(data, ack)
}
handlers.append(handler!)
handlers.append(handler)
}
/**