39 lines
802 B
Swift
39 lines
802 B
Swift
//
|
|
// TransactionHandler.swift
|
|
// TGUIKit
|
|
//
|
|
// Created by keepcoder on 03/10/2016.
|
|
// Copyright © 2016 Telegram. All rights reserved.
|
|
//
|
|
|
|
import Cocoa
|
|
|
|
public class TransactionHandler: NSObject {
|
|
|
|
private var lock: OSSpinLock = 0
|
|
|
|
private var handler:(() ->Void)?
|
|
|
|
public func set(handler:(() ->Void)?) -> Void {
|
|
OSSpinLockLock(&self.lock)
|
|
self.handler = handler
|
|
OSSpinLockUnlock(&self.lock)
|
|
}
|
|
|
|
public var isExutable:Bool {
|
|
return handler != nil
|
|
}
|
|
|
|
public func execute() -> Bool {
|
|
OSSpinLockLock(&self.lock)
|
|
let success = handler != nil
|
|
if let handler = handler {
|
|
handler()
|
|
self.handler = nil
|
|
}
|
|
OSSpinLockUnlock(&self.lock)
|
|
return success
|
|
}
|
|
|
|
}
|