Exemplo n.º 1
0
        public async Task AddTwinStatusAsync(CloudOperationStatus twinStatus)
        {
            bool added = await this.storage.AddTwinAsync(twinStatus);

            if (added)
            {
                this.AddStatus(twinStatus, this.twinsReportCache);
            }
        }
Exemplo n.º 2
0
        public async Task AddDirectMethodStatusAsync(CloudOperationStatus directMethodStatus)
        {
            bool added = await this.storage.AddDirectMethodAsync(directMethodStatus);

            if (added)
            {
                this.AddStatus(directMethodStatus, this.directMethodsReportCache);
            }
        }
Exemplo n.º 3
0
        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));
            }
        }
Exemplo n.º 4
0
        public async Task <bool> AddTwinAsync(CloudOperationStatus dmStatus)
        {
            await this.twinsStore.Append(dmStatus);

            return(true);
        }
Exemplo n.º 5
0
        public async Task <bool> AddDirectMethodAsync(CloudOperationStatus dmStatus)
        {
            await this.directMethodsStore.Append(dmStatus);

            return(true);
        }