public async Task AddTwinStatusAsync(CloudOperationStatus twinStatus) { bool added = await this.storage.AddTwinAsync(twinStatus); if (added) { this.AddStatus(twinStatus, this.twinsReportCache); } }
public async Task AddDirectMethodStatusAsync(CloudOperationStatus directMethodStatus) { bool added = await this.storage.AddDirectMethodAsync(directMethodStatus); if (added) { this.AddStatus(directMethodStatus, this.directMethodsReportCache); } }
public void AddStatus(CloudOperationStatus responseStatus, ConcurrentDictionary <string, ConcurrentDictionary <string, Tuple <int, DateTime> > > cache) { ConcurrentDictionary <string, Tuple <int, DateTime> > batch = cache.GetOrAdd(responseStatus.ModuleId, key => new ConcurrentDictionary <string, Tuple <int, DateTime> >()); // lock needed for update of concurrent dict lock (batch) { batch.AddOrUpdate( responseStatus.StatusCode, new Tuple <int, DateTime>(1, responseStatus.ResponseDateTime), (key, value) => new Tuple <int, DateTime>( value.Item1 + 1, responseStatus.ResponseDateTime > value.Item2 ? responseStatus.ResponseDateTime : value.Item2)); } }
public async Task <bool> AddTwinAsync(CloudOperationStatus dmStatus) { await this.twinsStore.Append(dmStatus); return(true); }
public async Task <bool> AddDirectMethodAsync(CloudOperationStatus dmStatus) { await this.directMethodsStore.Append(dmStatus); return(true); }