public void RemoveDeviceEntity(string deviceId) { DeviceTwinFlatModel deviceEntity = null; bool result = DevicesDB.Devices.TryGetValue(deviceId, out deviceEntity); if (!result) { return; } result = DevicesDB.Devices.TryRemove(deviceId, out deviceEntity); if (!result) { Log.Error(string.Format("Error removing device {0} from the cache", deviceId)); } }
public void EnsureDeviceEntity(string deviceId, DeviceTwinTagsModel tags) { //Update cache DeviceTwinFlatModel deviceEntity = null; bool result = DevicesDB.Devices.TryGetValue(deviceId, out deviceEntity); if (!result) { deviceEntity = DevicesDB.Devices.GetOrAdd(deviceId, new DeviceTwinFlatModel()); } deviceEntity.ProductFamily = tags.ProductFamily; deviceEntity.ProductName = tags.ProductName; deviceEntity.RetailerName = tags.RetailerName; deviceEntity.RetailerRegion = tags.RetailerRegion; }
private async Task RefreshDevicesTwinLocation(List <DeviceTwinFlatModel> devices) { try { DevicesDBCache deviceDB = _Cache.DevicesDB; if (!deviceDB.IsDevicesDBCacheInitialized || deviceDB.IsDevicesDBCacheLocationUpdating) { return; } //Set updating to true deviceDB.IsDevicesDBCacheLocationUpdating = true; //Get devices ConcurrentDictionary <string, DeviceTwinFlatModel> deviceEntities = deviceDB.Devices; foreach (DeviceTwinFlatModel device in devices) { LocationAddress location = GetLocationByIPAddress(device.IpAddress); if (deviceEntities.ContainsKey(device.DeviceId)) { DeviceTwinFlatModel twin = deviceEntities[device.DeviceId]; twin.Location = location; dynamic locationPatch = new ExpandoObject(); locationPatch.location = location; await _DeviceTwinRepo.UpdateDeviceSync(device.DeviceId, null, JsonConvert.SerializeObject(locationPatch)); } } //Set updating to false deviceDB.IsDevicesDBCacheLocationUpdating = false; } catch (Exception e) { Log.Error("Get IoTHub Devices Twin error {@error}", e.Message); throw e; } }