예제 #1
0
        /// <summary>
        /// Flattens Extension object on ITelemetry if exists into the properties and measurements.
        /// </summary>
        internal static void FlattenIExtensionIfExists(this ITelemetry telemetry)
        {
            if (telemetry.Extension != null)
            {
                ISupportProperties itemWithProperties = telemetry as ISupportProperties;
                ISupportMetrics    itemWithMetrics    = telemetry as ISupportMetrics;

                // Do not serialize if data cannot be stored on the item
                if (itemWithProperties != null || itemWithMetrics != null)
                {
                    DictionarySerializationWriter extensionSerializationWriter = new DictionarySerializationWriter();
                    telemetry.Extension.Serialize(extensionSerializationWriter);

                    if (itemWithProperties != null)
                    {
                        Utils.CopyDictionary(extensionSerializationWriter.AccumulatedDictionary, itemWithProperties.Properties);
                    }

                    if (itemWithMetrics != null)
                    {
                        Utils.CopyDictionary(extensionSerializationWriter.AccumulatedMeasurements, itemWithMetrics.Metrics);
                    }
                }
            }
        }
 private void SetMetrics(ISupportMetrics telemetry, string key, double value)
 {
     key = _telemetryKeyCache.GetProcessedKey(key);
     if (!telemetry.Metrics.ContainsKey(key))
     {
         telemetry.Metrics.Add(key, value);
     }
 }