暫無描述
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TelemetryDiagnosticsInstanceWrapper.cs 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System;
  2. using Uniject;
  3. using Unity.Services.Core.Telemetry.Internal;
  4. namespace UnityEngine.Purchasing.Telemetry
  5. {
  6. class TelemetryDiagnosticsInstanceWrapper : ITelemetryDiagnosticsInstanceWrapper
  7. {
  8. IDiagnostics m_Instance;
  9. ILogger m_Logger;
  10. IUtil m_Util;
  11. readonly TelemetryQueue<TelemetryDiagnosticParams> m_Queue;
  12. public TelemetryDiagnosticsInstanceWrapper(ILogger logger, IUtil util)
  13. {
  14. m_Logger = logger;
  15. m_Util = util;
  16. m_Queue = new TelemetryQueue<TelemetryDiagnosticParams>(SendDiagnosticOnMainThread);
  17. }
  18. public void SetDiagnosticsInstance(IDiagnostics diagnosticsInstance)
  19. {
  20. m_Instance = diagnosticsInstance;
  21. m_Queue.SendQueuedEvents();
  22. }
  23. public void SendDiagnostic(string diagnosticName, string diagnosticException)
  24. {
  25. var diagnosticParams = new TelemetryDiagnosticParams(diagnosticName, diagnosticException);
  26. if (m_Instance != null)
  27. {
  28. SendDiagnosticOnMainThread(diagnosticParams);
  29. }
  30. else
  31. {
  32. m_Queue.QueueEvent(diagnosticParams);
  33. }
  34. }
  35. void SendDiagnosticOnMainThread(TelemetryDiagnosticParams diagnosticParams)
  36. {
  37. m_Util.RunOnMainThread(() => SendDiagnosticAndCatchExceptions(diagnosticParams));
  38. }
  39. void SendDiagnosticAndCatchExceptions(TelemetryDiagnosticParams diagnosticParams)
  40. {
  41. try
  42. {
  43. m_Instance.SendDiagnostic(diagnosticParams.name, diagnosticParams.exception);
  44. }
  45. catch (Exception exception)
  46. {
  47. m_Logger.LogIAPError($"An exception occurred when sending diagnostic {diagnosticParams.name}. Message: {exception.Message}");
  48. }
  49. }
  50. }
  51. }