File tree Expand file tree Collapse file tree 1 file changed +15
-2
lines changed
Expand file tree Collapse file tree 1 file changed +15
-2
lines changed Original file line number Diff line number Diff line change @@ -29,19 +29,32 @@ public typealias AckCallback = (NSArray?) -> Void
2929@objc public class SocketAckHandler {
3030 let ackNum : Int !
3131 let event : String !
32+ var acked = false
3233 var callback : AckCallback ?
3334
3435 init ( event: String , ackNum: Int = 0 ) {
3536 self . ackNum = ackNum
3637 self . event = event
3738 }
3839
39- func onAck( callback: AckCallback ) {
40+ public func onAck( timeout : UInt64 , withCallback callback: AckCallback ) {
4041 self . callback = callback
42+
43+ let time = dispatch_time ( DISPATCH_TIME_NOW, Int64 ( timeout * NSEC_PER_SEC) )
44+ dispatch_after ( time, dispatch_get_main_queue ( ) ) { [ weak self] in
45+ if self == nil {
46+ return
47+ }
48+
49+ if !self !. acked {
50+ self ? . executeAck ( [ " No ACK " ] )
51+ }
52+ }
4153 }
4254
4355 func executeAck( data: NSArray ? ) {
44- dispatch_async ( dispatch_get_main_queue ( ) ) { [ cb = self . callback] in
56+ dispatch_async ( dispatch_get_main_queue ( ) ) { [ weak self, cb = self . callback] in
57+ self ? . acked = true
4558 cb ? ( data)
4659 return
4760 }
You can’t perform that action at this time.
0 commit comments