public async Task <LoRaADRTable> AddTableEntry(LoRaADRTableEntry entry)
        {
            if (entry is null)
            {
                throw new ArgumentNullException(nameof(entry));
            }

            LoRaADRTable table = null;

            using (var redisLock = new RedisLockWrapper(entry.DevEUI, this.redisCache))
            {
                if (await redisLock.TakeLockAsync())
                {
                    var entryKey = GetEntryKey(entry.DevEUI);
                    table = await GetADRTableCore(entryKey) ?? new LoRaADRTable();

                    AddEntryToTable(table, entry);

                    // update redis store
                    _ = await this.redisCache.StringSetAsync(entryKey, JsonConvert.SerializeObject(table));
                }
            }

            return(table);
        }
 public async Task UpdateADRTable(DevEui devEUI, LoRaADRTable table)
 {
     using var redisLock = new RedisLockWrapper(devEUI, this.redisCache);
     if (await redisLock.TakeLockAsync())
     {
         _ = await this.redisCache.StringSetAsync(GetEntryKey(devEUI), JsonConvert.SerializeObject(table));
     }
 }
Пример #3
0
        public async Task <LoRaADRTable> AddTableEntry(LoRaADRTableEntry entry)
        {
            LoRaADRTable table = null;

            using (var redisLock = new RedisLockWrapper(entry.DevEUI, this.redisCache))
            {
                if (redisLock.TakeLock())
                {
                    var entryKey = GetEntryKey(entry.DevEUI);
                    table = await this.GetADRTableCore(entryKey) ?? new LoRaADRTable();

                    AddEntryToTable(table, entry);

                    // update redis store
                    this.redisCache.StringSet(entryKey, JsonConvert.SerializeObject(table));
                }
            }

            return(table);
        }