Merge branch 'timeouts' into 1.2
This commit is contained in:
commit
7765e57a11
@ -103,7 +103,8 @@ socket.on("ackEvent") {data, ack in
|
||||
println("Got int")
|
||||
}
|
||||
|
||||
socket.emitWithAck("ackTest", "test").onAck {data in
|
||||
// You can specify a custom timeout interval. 0 means no timeout.
|
||||
socket.emitWithAck("ackTest", "test").onAck(0) {data in
|
||||
println(data?[0])
|
||||
}
|
||||
|
||||
|
||||
@ -29,6 +29,7 @@ public typealias AckCallback = (NSArray?) -> Void
|
||||
@objc public class SocketAckHandler {
|
||||
let ackNum:Int!
|
||||
let event:String!
|
||||
var acked = false
|
||||
var callback:AckCallback?
|
||||
|
||||
init(event:String, ackNum:Int = 0) {
|
||||
@ -36,12 +37,27 @@ public typealias AckCallback = (NSArray?) -> Void
|
||||
self.event = event
|
||||
}
|
||||
|
||||
func onAck(callback:AckCallback) {
|
||||
public func onAck(timeout:UInt64, withCallback callback:AckCallback) {
|
||||
self.callback = callback
|
||||
|
||||
|
||||
if timeout != 0 {
|
||||
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(timeout * NSEC_PER_SEC))
|
||||
dispatch_after(time, dispatch_get_main_queue()) {[weak self] in
|
||||
if self == nil {
|
||||
return
|
||||
}
|
||||
|
||||
if !self!.acked {
|
||||
self?.executeAck(["No ACK"])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func executeAck(data:NSArray?) {
|
||||
dispatch_async(dispatch_get_main_queue()) {[cb = self.callback] in
|
||||
dispatch_async(dispatch_get_main_queue()) {[weak self, cb = self.callback] in
|
||||
self?.acked = true
|
||||
cb?(data)
|
||||
return
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user