private ExecutionReturnSet GetReturnSet(TransactionTrace trace, TransactionResult result) { var returnSet = new ExecutionReturnSet { TransactionId = result.TransactionId, Status = result.Status, Bloom = result.Bloom }; if (trace.IsSuccessful()) { foreach (var s in trace.GetFlattenedWrites()) { returnSet.StateChanges[s.Key] = s.Value; } returnSet.ReturnValue = trace.ReturnValue; } foreach (var s in trace.GetFlattenedReads()) { returnSet.StateAccesses[s.Key] = s.Value; } return(returnSet); }
private ExecutionReturnSet GetReturnSet(TransactionTrace trace, TransactionResult result) { var returnSet = new ExecutionReturnSet { TransactionId = result.TransactionId, Status = result.Status, Bloom = result.Bloom, TransactionResult = result }; if (trace.IsSuccessful()) { var transactionExecutingStateSets = trace.GetStateSets(); returnSet = GetReturnSet(returnSet, transactionExecutingStateSets); returnSet.ReturnValue = trace.ReturnValue; } else { var transactionExecutingStateSets = new List <TransactionExecutingStateSet>(); foreach (var preTrace in trace.PreTraces) { if (preTrace.IsSuccessful()) { transactionExecutingStateSets.AddRange(preTrace.GetStateSets()); } } foreach (var postTrace in trace.PostTraces) { if (postTrace.IsSuccessful()) { transactionExecutingStateSets.AddRange(postTrace.GetStateSets()); } } returnSet = GetReturnSet(returnSet, transactionExecutingStateSets); } var reads = trace.GetFlattenedReads(); foreach (var read in reads) { returnSet.StateAccesses[read.Key] = read.Value; } return(returnSet); }