public void SendActivityMetric()

in src/Activities/Internal/EventSource/ActivityEventSender.cs [25:105]


		public void SendActivityMetric(Activity activity)
		{
			if (!m_eventSource.IsEnabled())
			{
				return;
			}

			string serviceName = m_serviceName;
			string activityId = activity.Id ?? string.Empty;
			string name = activity.OperationName;
			double durationMs = activity.Duration.TotalMilliseconds;
			string userHash = activity.GetUserHash();
			bool isHealthCheck = activity.IsHealthCheck();

			string subtype = NullPlaceholder;
			string metadata = NullPlaceholder;
			string resultAsString = NullPlaceholder;
			foreach (KeyValuePair<string, string?> pair in activity.Tags)
			{
				if (pair.Value == null)
				{
					continue;
				}

				if (string.Equals(ActivityTagKeys.Result, pair.Key, StringComparison.Ordinal))
				{
					resultAsString = pair.Value;
				}
				else if (string.Equals(ActivityTagKeys.SubType, pair.Key, StringComparison.Ordinal))
				{
					subtype = pair.Value;
				}
				else if (string.Equals(ActivityTagKeys.Metadata, pair.Key, StringComparison.Ordinal))
				{
					metadata = pair.Value;
				}
			}

#pragma warning disable CS0618 // Until it's used we need to include correlationId into events
			string correlationId = activity.GetObsoleteCorrelationId()?.ToString()
				?? activity.GetRootIdAsGuid()?.ToString()
				?? NullPlaceholder;
#pragma warning restore CS0618

			string nameAsString = SanitizeString(name, nameof(name), name);
			string subTypeAsString = SanitizeString(subtype, nameof(subtype), name);
			string metaDataAsString = SanitizeString(metadata, nameof(metadata), name);
			string userHashAsString = SanitizeString(userHash, nameof(userHash), name);
			string serviceNameAsString = SanitizeString(serviceName, nameof(serviceName), name);
			string correlationIdAsString = SanitizeString(correlationId, nameof(correlationId), name);
			string activityIdAsString = SanitizeString(activityId, nameof(activityId), name);
			long durationMsAsLong = Convert.ToInt64(durationMs, CultureInfo.InvariantCulture);

			if (isHealthCheck)
			{
				m_eventSource.WriteTimedScopeTestEvent(
					name: nameAsString,
					subType: subTypeAsString,
					metadata: metaDataAsString,
					serviceName: serviceNameAsString,
					logCategory: s_logCategory,
					result: resultAsString,
					correlationId: correlationIdAsString,
					activityId: activityIdAsString,
					durationMs: durationMsAsLong);
			}
			else
			{
				m_eventSource.WriteTimedScopeEvent(
					name: nameAsString,
					subType: subTypeAsString,
					metadata: metaDataAsString,
					userHash: userHashAsString,
					serviceName: serviceNameAsString,
					logCategory: s_logCategory,
					result: resultAsString,
					correlationId: correlationIdAsString,
					activityId: activityIdAsString,
					durationMs: durationMsAsLong);
			}
		}