47 lines
1.5 KiB
C#
47 lines
1.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace UnityEngine.Purchasing.Telemetry
|
|
{
|
|
class TelemetryMetricsService : ITelemetryMetricsService
|
|
{
|
|
readonly ITelemetryMetricsInstanceWrapper m_TelemetryMetricsInstanceWrapper;
|
|
|
|
public TelemetryMetricsService(ITelemetryMetricsInstanceWrapper telemetryMetricsInstanceWrapper)
|
|
{
|
|
m_TelemetryMetricsInstanceWrapper = telemetryMetricsInstanceWrapper;
|
|
}
|
|
|
|
public void ExecuteTimedAction(Action timedAction, TelemetryMetricDefinition metricDefinition)
|
|
{
|
|
var handle = CreateAndStartMetricEvent(metricDefinition);
|
|
timedAction();
|
|
|
|
try
|
|
{
|
|
handle.StopAndSendMetric();
|
|
}
|
|
catch (IapTelemetryException exception)
|
|
{
|
|
Debug.unityLogger.LogIAPError($"An exception occured while sending a metric: {exception.Message}");
|
|
}
|
|
}
|
|
|
|
public ITelemetryMetricEvent CreateAndStartMetricEvent(TelemetryMetricDefinition metricDefinition)
|
|
{
|
|
ITelemetryMetricEvent metricEvent = new TelemetryMetricEvent(m_TelemetryMetricsInstanceWrapper, metricDefinition.MetricType, metricDefinition.MetricName);
|
|
|
|
try
|
|
{
|
|
metricEvent.StartMetric();
|
|
}
|
|
catch (IapTelemetryException exception)
|
|
{
|
|
Debug.unityLogger.LogIAPError($"An exception occured while starting a metric: {exception.Message}");
|
|
}
|
|
|
|
return metricEvent;
|
|
}
|
|
}
|
|
}
|