public void SendActivityMetric()

in src/Activities/Internal/ActivityMetricsSender.cs [35:73]


		public void SendActivityMetric(Activity activity)
		{
			double durationMs = activity.Duration.TotalMilliseconds;

			int tagsCount = s_customTags.Length + activity.TagObjects.Count() + activity.Baggage.Count();

			KeyValuePair<string, object?>[] tags = m_arrayPool.Rent(tagsCount);

			int index = 0;

			foreach (Func<ActivityMetricsSender, Activity, KeyValuePair<string, object?>> getter in s_customTags)
			{
				tags[index++] = getter(this, activity);
			}

			foreach (KeyValuePair<string, string?> baggage in activity.Baggage)
			{
				
				tags[index++] = CreatePair(baggage.Key, baggage.Value);
			}

			foreach (KeyValuePair<string, object?> tag in activity.TagObjects)
			{
				tags[index++] = tag;
			}

			ReadOnlySpan<KeyValuePair<string, object?>> tagsSpan = MemoryExtensions.AsSpan(tags, 0, tagsCount);

			if (activity.IsHealthCheck())
			{
				m_healthCheckActivityCounter.Add(durationMs, tagsSpan);
			}
			else
			{
				m_activityCounter.Add(durationMs, tagsSpan);
			}

			m_arrayPool.Return(tags, clearArray: true);
		}