TelemetryMetricsInstanceWrapper.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using Unity.Services.Core.Telemetry.Internal;
  3. namespace UnityEngine.Purchasing.Telemetry
  4. {
  5. class TelemetryMetricsInstanceWrapper : ITelemetryMetricsInstanceWrapper
  6. {
  7. IMetrics m_Instance;
  8. TelemetryQueue<TelemetryMetricParams> m_Queue;
  9. public TelemetryMetricsInstanceWrapper()
  10. {
  11. m_Queue = new TelemetryQueue<TelemetryMetricParams>(SendMetricByType);
  12. }
  13. public void SetMetricsInstance(IMetrics metricsInstance)
  14. {
  15. m_Instance = metricsInstance;
  16. if (m_Instance != null)
  17. {
  18. m_Queue.SendQueuedEvents();
  19. }
  20. }
  21. public void SendMetric(TelemetryMetricTypes metricType, string metricName, double metricTimeSeconds)
  22. {
  23. var telemetryMetricParams = new TelemetryMetricParams(metricType, metricName, metricTimeSeconds);
  24. if (m_Instance != null)
  25. {
  26. SendMetricByType(telemetryMetricParams);
  27. }
  28. else
  29. {
  30. m_Queue.QueueEvent(telemetryMetricParams);
  31. }
  32. }
  33. void SendMetricByType(TelemetryMetricParams metricParams)
  34. {
  35. switch (metricParams.type)
  36. {
  37. case TelemetryMetricTypes.Gauge:
  38. m_Instance.SendGaugeMetric(metricParams.name, metricParams.timeSeconds);
  39. break;
  40. case TelemetryMetricTypes.Histogram:
  41. m_Instance.SendHistogramMetric(metricParams.name, metricParams.timeSeconds);
  42. break;
  43. case TelemetryMetricTypes.Sum:
  44. m_Instance.SendSumMetric(metricParams.name, metricParams.timeSeconds);
  45. break;
  46. }
  47. }
  48. }
  49. }