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)); } }
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); }