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