aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.UI/Telemetry
diff options
context:
space:
mode:
authorRoy Ben Shabat <roy.mail.net@gmail.com>2025-08-31 04:48:46 +0300
committerRoy Ben Shabat <roy.mail.net@gmail.com>2025-08-31 04:48:46 +0300
commit76a913a9d3e70f4379c3aaca7e6dd8e4da6aff13 (patch)
tree5c1faa8986974daed7393c61e2fe67abb87f275b /Software/Visual_Studio/PPC/Tango.PPC.UI/Telemetry
parenta1d55aa060450b0a16b597794686b2aa41eea259 (diff)
downloadTango-76a913a9d3e70f4379c3aaca7e6dd8e4da6aff13.tar.gz
Tango-76a913a9d3e70f4379c3aaca7e6dd8e4da6aff13.zip
Telemetry closed corners.
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.UI/Telemetry')
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Telemetry/DefaultTelemetryProvider.cs81
1 files changed, 54 insertions, 27 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Telemetry/DefaultTelemetryProvider.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Telemetry/DefaultTelemetryProvider.cs
index 04837bb38..31646c709 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Telemetry/DefaultTelemetryProvider.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Telemetry/DefaultTelemetryProvider.cs
@@ -6,6 +6,7 @@ using System.Threading;
using System.Threading.Tasks;
using Tango.BL;
using Tango.BL.Entities;
+using Tango.Core;
using Tango.Core.DI;
using Tango.PPC.Common;
using Tango.PPC.Common.Application;
@@ -21,7 +22,7 @@ using Tango.Telemetry.Sources;
namespace Tango.PPC.UI.Telemetry
{
[TangoCreateWhenRegistered]
- public class DefaultTelemetryProvider : ITelemetryProvider, ITelemetryCheckpointsRecoveryClient
+ public class DefaultTelemetryProvider : ExtendedObject, ITelemetryProvider, ITelemetryCheckpointsRecoveryClient
{
private PPCWebClient _webClient;
private Machine _machine;
@@ -60,44 +61,63 @@ namespace Tango.PPC.UI.Telemetry
_ppcSettings = SettingsManager.Default.GetOrCreate<PPCSettings>();
- using (ObservablesContext db = ObservablesContext.CreateDefault())
+ try
{
- var site = db.Sites.FirstOrDefault(x => x.Guid == _machine.SiteGuid);
-
- TelemetryPublisher = new TelemetryPublisher(new TelemetryPublisherConfiguration()
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
{
- Environment = _ppcSettings.DeploymentSlot.ToString(),
- Organization = _machine.Organization.Name,
- Site = site?.Name,
- SerialNumber = _machine.SerialNumber,
- MachineType = _machine.Type,
- EnableBackoff = Settings.EnableBackoff,
- HistorySourcesRequestInterval = Settings.HistorySourcesRequestInterval,
- MaxExponentialBackoff = Settings.MaxExponentialBackoff,
- PendingStorageCheckInterval = Settings.PendingStorageCheckInterval,
- }, this);
+ var site = db.Sites.FirstOrDefault(x => x.Guid == _machine.SiteGuid);
- (TelemetryPublisher.StorageManager as TelemetryLiteDBStorageManager).EnableCheckPointsRecovery = true;
- (TelemetryPublisher.StorageManager as TelemetryLiteDBStorageManager).EnforceCheckpointsRecovery = true;
- }
+ TelemetryPublisher = new TelemetryPublisher(new TelemetryPublisherConfiguration()
+ {
+ Environment = _ppcSettings.DeploymentSlot.ToString(),
+ Organization = _machine.Organization.Name,
+ Site = site?.Name,
+ SerialNumber = _machine.SerialNumber,
+ MachineType = _machine.Type,
+ EnableBackoff = Settings.EnableBackoff,
+ HistorySourcesRequestInterval = Settings.HistorySourcesRequestInterval,
+ MaxExponentialBackoff = Settings.MaxExponentialBackoff,
+ PendingStorageCheckInterval = Settings.PendingStorageCheckInterval,
+ }, this);
- InternetConnectivity.EnsureStarted();
+ (TelemetryPublisher.StorageManager as TelemetryLiteDBStorageManager).EnableCheckPointsRecovery = true;
+ (TelemetryPublisher.StorageManager as TelemetryLiteDBStorageManager).EnforceCheckpointsRecovery = true;
+ }
+
+ InternetConnectivity.EnsureStarted();
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error initializing telemetry publisher.");
+ return;
+ }
Task.Factory.StartNew(async () =>
{
+ LogManager.Log("Telemetry is waiting for an Internet connection...");
+
while (!InternetConnectivity.IsInternetAvailable())
{
Thread.Sleep(5000);
}
- if (!_webClient.IsAuthenticated)
+ LogManager.Log("Retrieving telemetry device connection string from machine service...");
+
+ try
{
- await _webClient.Login(new LoginRequest() { Mode = LoginMode.Machine, SerialNumber = _machine.SerialNumber, MachineGuid = _machine.Guid });
- }
+ if (!_webClient.IsAuthenticated)
+ {
+ await _webClient.Login(new LoginRequest() { Mode = LoginMode.Machine, SerialNumber = _machine.SerialNumber, MachineGuid = _machine.Guid });
+ }
- var response = await _webClient.GetTelemetryDeviceConnection(new TelemetryDeviceRegistrationRequest());
- Settings.IoTHubConnectionString = response.ConnectionString;
- Settings.Save();
+ var response = await _webClient.GetTelemetryDeviceConnection(new TelemetryDeviceRegistrationRequest());
+ Settings.IoTHubConnectionString = response.ConnectionString;
+ Settings.Save();
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Failed to retrieve telemetry device connection string from machine service. Falling back to the current connection string from settings...");
+ }
if (Settings.EnableIoTHub)
{
@@ -171,7 +191,14 @@ namespace Tango.PPC.UI.Telemetry
TelemetryPublisher.RegisterSource(new TelemetryWireStreamingSource(_machineProvider.MachineOperator));
}
- await TelemetryPublisher.Start();
+ try
+ {
+ await TelemetryPublisher.Start();
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error starting telemetry publisher.");
+ }
});
}
@@ -203,7 +230,7 @@ namespace Tango.PPC.UI.Telemetry
public void Dispose()
{
-
+ TelemetryPublisher?.Dispose();
}
}
}