public void InDoubt( Enlistment enlistment )
        {
            Status = TxfmStatus.InInDoubt;

            enlistment.Done();

            Status = TxfmStatus.InTransaction;
        }
        /// <summary>
        /// Notifies an enlisted object that a transaction is being prepared for commitment.
        /// </summary>
        /// <param name="preparingEnlistment">A <see cref="T:System.Transactions.PreparingEnlistment"/> object used to send a response to the transaction manager.</param>
        public void Prepare( PreparingEnlistment preparingEnlistment )
        {
            Status = TxfmStatus.InPrepare;

            // TODO: Write to recovery log.

            foreach( var operation in operations )
            {
                operation.Commit();
            }

            preparingEnlistment.Prepared();

            Status = TxfmStatus.InTransaction;
        }
        /// <summary>
        /// Notifies an enlisted object that a transaction is being committed.
        /// </summary>
        /// <param name="enlistment">An <see cref="T:System.Transactions.Enlistment"/> object used to send a response to the transaction manager.</param>
        public void Commit( Enlistment enlistment )
        {
            Status = TxfmStatus.InCommit;

            // TODO: Remove recovery log.

            foreach( var operation in operations )
            {
                operation.Commit();
            }

            enlistment.Done();

            Status = TxfmStatus.None;
        }
        /// <summary>
        /// Notifies an enlisted object that a transaction is being rolled back (aborted).
        /// </summary>
        /// <param name="enlistment">A <see cref="T:System.Transactions.Enlistment"/> object used to send a response to the transaction manager.</param>
        public void Rollback( Enlistment enlistment )
        {
            Status = TxfmStatus.InRollback;

            // TODO: Remove recovery log.

            for( var i = operations.Count - 1; i >= 0; i-- )
            {
                operations[i].Rollback();
            }

            enlistment.Done();

            Status = TxfmStatus.None;
        }