void AddResult(TestOperationResult result, ConcurrentDictionary <string, ConcurrentDictionary <string, Tuple <int, DateTime> > > cache) { ConcurrentDictionary <string, Tuple <int, DateTime> > batch = cache.GetOrAdd(result.Source, key => new ConcurrentDictionary <string, Tuple <int, DateTime> >()); // lock needed for update of concurrent dict lock (batch) { batch.AddOrUpdate( result.Result, new Tuple <int, DateTime>(1, result.CreatedAt), (key, value) => new Tuple <int, DateTime>( value.Item1 + 1, result.CreatedAt > value.Item2 ? result.CreatedAt : value.Item2)); } }
public async Task <bool> AddTwinResultAsync(TestOperationResult result) { await this.twinsStore.Append(result); return(true); }
public async Task <bool> AddDirectMethodResultAsync(TestOperationResult result) { await this.directMethodsStore.Append(result); return(true); }