ChaosTest.ChaosService.ChaosService.GetEventsAsync C# (CSharp) Method

GetEventsAsync() public method

public GetEventsAsync ( ) : Task
return Task
        public async Task<Result> GetEventsAsync()
        {
            Result results = new Result
            {
                ChaosLog = new SortedList<long, ChaosEntry>(),
                CurrentState = StringResource.NotAvailable,
                TotalRuntime = StringResource.NotAvailable
            };

            IReliableDictionary<long, ChaosEntry> savedEvents =
                await this.StateManager.GetOrAddAsync<IReliableDictionary<long, ChaosEntry>>(StringResource.SavedEventsKey);

            IReliableDictionary<string, DateTime> startTime =
                await this.StateManager.GetOrAddAsync<IReliableDictionary<string, DateTime>>(StringResource.StartTimeKey);

            IReliableDictionary<string, CurrentState> currentState =
                await this.StateManager.GetOrAddAsync<IReliableDictionary<string, CurrentState>>(StringResource.ChaosServiceStateKey);

            using (ITransaction tx = this.StateManager.CreateTransaction())
            {
                IAsyncEnumerable<KeyValuePair<long, ChaosEntry>> enumerable = await savedEvents.CreateEnumerableAsync(tx);

                await enumerable.ForeachAsync(CancellationToken.None, item => { results.ChaosLog.Add(item.Key, item.Value); });

                ConditionalValue<DateTime> result = await startTime.TryGetValueAsync(tx, StringResource.StartTimeKey);

                if (result.HasValue)
                {
                    results.TotalRuntime = (DateTime.UtcNow - result.Value).ToString();
                }

                ConditionalValue<CurrentState> currentStateResult = await currentState.TryGetValueAsync(tx, StringResource.ChaosServiceStateKey);

                if (currentStateResult.HasValue)
                {
                    results.CurrentState = currentStateResult.Value.ToString();
                }

                await tx.CommitAsync();
            }

            return results;
        }