X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/5dd5f9ec28f304ca377c42fd7f711d6cf12b90e1..5c19dc3ae3bd8e40a9c028b0deddd50ff337692c:/Security/libsecurity_utilities/lib/transactions.h diff --git a/Security/libsecurity_utilities/lib/transactions.h b/Security/libsecurity_utilities/lib/transactions.h deleted file mode 100644 index dc236a5b..00000000 --- a/Security/libsecurity_utilities/lib/transactions.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (c) 2004,2011,2014 Apple Inc. All Rights Reserved. - * - * @APPLE_LICENSE_HEADER_START@ - * - * This file contains Original Code and/or Modifications of Original Code - * as defined in and that are subject to the Apple Public Source License - * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://www.opensource.apple.com/apsl/ and read it before using this - * file. - * - * The Original Code and all software distributed under the License are - * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER - * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. - * Please see the License for the specific language governing rights and - * limitations under the License. - * - * @APPLE_LICENSE_HEADER_END@ - */ - - -// -// transactions - generic transaction frame support -// -#ifndef _H_TRANSACTIONS -#define _H_TRANSACTIONS - -#include -#include - - -namespace Security { - - -// -// Implementation base class. Do not use directly. -// -class TransactionBase { -public: - // what happens if this object gets destroyed? - enum Outcome { - successful, // succeeds as set - cancelled, // cancelled (rolled back) - conditional // succeeds normally, cancelled on exception - }; - -public: - virtual ~TransactionBase(); - - void outcome(Outcome oc) { mOutcome = oc; } - Outcome outcome() const { return mOutcome; } - -protected: - TransactionBase(Outcome outcome) : mOutcome(outcome) { } - - Outcome finalOutcome() const; - -private: - Outcome mOutcome; // current outcome setting -}; - - -// -// A ManagedTransaction will call methods begin() and end() on the Carrier object -// it belongs to, and manage the "outcome" state and semantics automatically. -// You would usually subclass this, though the class is complete in itself if you -// need nothing else out of your transaction objects. -// -template -class ManagedTransaction : public TransactionBase { -public: - ManagedTransaction(Carrier &carrier, Outcome outcome = conditional) - : TransactionBase(outcome), mCarrier(carrier) - { - carrier.begin(); - } - - ~ManagedTransaction() - { - switch (finalOutcome()) { - case successful: - this->commitAction(); - break; - case cancelled: - this->cancelAction(); - break; - default: - assert(false); - break; - } - } - -protected: - virtual void commitAction() { mCarrier.end(); } - virtual void cancelAction() { mCarrier.cancel(); } - - Carrier &mCarrier; -}; - - -} // end namespace Security - - -#endif //_H_TRANSACTIONS