Exemple #1
0
        public void SetMemoryVersionsToCurrent()
        {
            int countMemoryRefVersioned = memoryStartVersions.Count;

            IInnerTransactionStmMemory[] memoryRefs = new IInnerTransactionStmMemory[countMemoryRefVersioned];
            memoryStartVersions.Keys.CopyTo(memoryRefs, 0);
            for (int i = 0; i < countMemoryRefVersioned; i++)
            {
                IInnerTransactionStmMemory memoryRef = memoryRefs[i];
                memoryStartVersions[memoryRef] = memoryRef.GetVersionForImbrication(imbrication);
            }
            state = I_TRANSACTION_STATE.ROLLBACKED_BY_SUBTRANSACTION;
        }
Exemple #2
0
        public bool ValidateMemoryVersion(IInnerTransactionStmMemory memoryRef)//ok
        {
            if (parentTransaction != null)
            {
                if (!ParentTransaction.ValidateMemoryVersion(memoryRef))
                {
                    state = I_TRANSACTION_STATE.PARENT_CONFLICT;
                    return(false);
                }
            }
            int currentImbricationMemoryVersion = memoryRef.GetVersionForImbrication(imbrication);

            if (currentImbricationMemoryVersion != memoryStartVersions[memoryRef])
            {
                state = I_TRANSACTION_STATE.CONFLICT;
                return(false);
            }
            return(true);
        }