public static async Task <TwinAllOperationsInitializer> CreateAsync(RegistryManager registryManager, ModuleClient moduleClient, ITwinTestResultHandler resultHandler, TwinEventStorage storage) { try { TwinState initializedState; Twin twin = await registryManager.GetTwinAsync(Settings.Current.DeviceId, Settings.Current.ModuleId); Dictionary <string, DateTime> reportedPropertyUpdates = await storage.GetAllReportedPropertiesUpdatedAsync(); Dictionary <string, DateTime> desiredPropertyUpdates = await storage.GetAllDesiredPropertiesUpdatedAsync(); if (reportedPropertyUpdates.Count == 0 && desiredPropertyUpdates.Count == 0 && (await storage.GetAllDesiredPropertiesReceivedAsync()).Count == 0) { Logger.LogInformation("No existing storage detected. Initializing new module twin for fresh run."); // reset desired properties Twin desiredPropertyResetTwin = await registryManager.ReplaceTwinAsync(Settings.Current.DeviceId, Settings.Current.ModuleId, new Twin(), twin.ETag); // reset reported properties TwinCollection eraseReportedProperties = GetReportedPropertiesResetTwin(desiredPropertyResetTwin); await moduleClient.UpdateReportedPropertiesAsync(eraseReportedProperties); await Task.Delay(TimeSpan.FromSeconds(10)); // give enough time for reported properties reset to reach cloud twin = await registryManager.GetTwinAsync(Settings.Current.DeviceId, Settings.Current.ModuleId); initializedState = new TwinState { ReportedPropertyUpdateCounter = 0, DesiredPropertyUpdateCounter = 0, TwinETag = twin.ETag, LastTimeOffline = DateTime.MinValue }; } else { Logger.LogInformation("Existing storage detected. Initializing reported / desired property update counters."); initializedState = new TwinState { ReportedPropertyUpdateCounter = GetNewPropertyCounter(reportedPropertyUpdates), DesiredPropertyUpdateCounter = GetNewPropertyCounter(desiredPropertyUpdates), TwinETag = twin.ETag, LastTimeOffline = DateTime.MinValue }; } Logger.LogInformation($"Start state of module twin: {JsonConvert.SerializeObject(twin, Formatting.Indented)}"); return(new TwinAllOperationsInitializer(registryManager, moduleClient, resultHandler, storage, initializedState)); } catch (Exception e) { throw new Exception($"Shutting down module. Initialization failure: {e}"); } }
public static async Task <TwinEdgeOperationsInitializer> CreateAsync(RegistryManager registryManager, ModuleClient moduleClient, ITwinTestResultHandler reporter) { try { TwinState initializedState; Twin twin = await registryManager.GetTwinAsync(Settings.Current.DeviceId, Settings.Current.ModuleId); // reset properties Twin desiredPropertyResetTwin = await registryManager.ReplaceTwinAsync(Settings.Current.DeviceId, Settings.Current.ModuleId, new Twin(), twin.ETag); initializedState = new TwinState { TwinETag = desiredPropertyResetTwin.ETag }; Logger.LogInformation($"Start state of module twin: {JsonConvert.SerializeObject(twin, Formatting.Indented)}"); return(new TwinEdgeOperationsInitializer(registryManager, moduleClient, reporter, initializedState)); } catch (Exception e) { throw new Exception($"Shutting down module. Initialization failure: {e}"); } }
TwinAllOperationsInitializer(RegistryManager registryManager, ModuleClient moduleClient, ITwinTestResultHandler resultHandler, TwinEventStorage storage, TwinState twinState) { this.reportedPropertyUpdater = new ReportedPropertyUpdater(registryManager, moduleClient, resultHandler, twinState); this.desiredPropertyUpdater = new DesiredPropertyUpdater(registryManager, resultHandler, twinState); this.desiredPropertyReceiver = new DesiredPropertyReceiver(registryManager, moduleClient, resultHandler); this.reportedPropertiesValidator = new ReportedPropertiesValidator(registryManager, moduleClient, storage, resultHandler, twinState); this.desiredPropertiesValidator = new DesiredPropertiesValidator(registryManager, moduleClient, storage, resultHandler, twinState); }
public static async Task <TwinCloudOperationsInitializer> CreateAsync(RegistryManager registryManager, ITwinTestResultHandler resultHandler) { try { TwinTestState initializedState; Twin twin = await registryManager.GetTwinAsync(Settings.Current.DeviceId, Settings.Current.TargetModuleId); initializedState = new TwinTestState(twin.ETag); Logger.LogInformation($"Start state of module twin: {JsonConvert.SerializeObject(twin, Formatting.Indented)}"); return(new TwinCloudOperationsInitializer(registryManager, resultHandler, initializedState)); } catch (Exception e) { throw new Exception($"Shutting down module. Initialization failure: {e}"); } }
TwinEdgeOperationsInitializer(RegistryManager registryManager, ModuleClient moduleClient, ITwinTestResultHandler reporter, TwinState initializedState) { this.reportedPropertyUpdater = new ReportedPropertyUpdater(registryManager, moduleClient, reporter, initializedState); this.desiredPropertiesReceiver = new DesiredPropertyReceiver(registryManager, moduleClient, reporter); }
public static Task <TwinEdgeOperationsInitializer> CreateAsync(RegistryManager registryManager, ModuleClient moduleClient, ITwinTestResultHandler reporter) { return(Task.FromResult(new TwinEdgeOperationsInitializer(registryManager, moduleClient, reporter, 0))); }
TwinCloudOperationsInitializer(RegistryManager registryManager, ITwinTestResultHandler resultHandler, TwinTestState twinTestState) { this.desiredPropertyUpdater = new DesiredPropertyUpdater(registryManager, resultHandler, twinTestState); }
public ReportedPropertyUpdater(ModuleClient moduleClient, ITwinTestResultHandler reporter, int reportedPropertyUpdateCounter) { this.moduleClient = moduleClient; this.reporter = reporter; this.reportedPropertyUpdateCounter = reportedPropertyUpdateCounter; }
public DesiredPropertiesValidator(RegistryManager registryManager, ModuleClient moduleClient, TwinEventStorage storage, ITwinTestResultHandler resultHandler, TwinState twinState) { this.registryManager = registryManager; this.moduleClient = moduleClient; this.storage = storage; this.resultHandler = resultHandler; this.twinState = twinState; }
public DesiredPropertyReceiver(RegistryManager registryManager, ModuleClient moduleClient, ITwinTestResultHandler resultHandler) { this.registryManager = registryManager; this.moduleClient = moduleClient; this.resultHandler = resultHandler; }
public DesiredPropertiesValidator(RegistryManager registryManager, ModuleClient moduleClient, TwinEventStorage storage, ITwinTestResultHandler resultHandler, TwinState twinState) { this.registryManager = registryManager; this.moduleClient = moduleClient; this.storage = storage; this.resultHandler = resultHandler; this.twinState = twinState; moduleClient.SetConnectionStatusChangesHandler((status, reason) => { Logger.LogInformation($"Detected change in connection status:{Environment.NewLine}Changed Status: {status} Reason: {reason}"); if (status == ConnectionStatus.Disconnected_Retrying) { this.twinState.LastTimeOfEdgeRestart = DateTime.UtcNow; } }); }
public ReportedPropertyUpdater(RegistryManager registryManager, ModuleClient moduleClient, ITwinTestResultHandler reporter, TwinState twinState) { this.registryManager = registryManager; this.moduleClient = moduleClient; this.reporter = reporter; this.twinState = twinState; }
public DesiredPropertyUpdater(RegistryManager registryManager, ITwinTestResultHandler resultHandler, TwinState twinState) { this.registryManager = registryManager; this.resultHandler = resultHandler; this.twinState = twinState; }
public static async Task <TwinEdgeOperationsInitializer> CreateAsync(RegistryManager registryManager, ModuleClient moduleClient, ITwinTestResultHandler reporter) { try { Twin twin = await registryManager.GetTwinAsync(Settings.Current.DeviceId, Settings.Current.TargetModuleId); // reset reported properties await TwinTesterUtil.ResetTwinReportedPropertiesAsync(moduleClient, twin); return(new TwinEdgeOperationsInitializer(registryManager, moduleClient, reporter, 0)); } catch (Exception e) { throw new Exception($"Shutting down module. Initialization failure: {e}"); } }