Files

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
}
}