/// <summary>
        /// Sets last known request sampling percentage for telemetry type.
        /// </summary>
        internal void SetLastObservedSamplingPercentage(SamplingTelemetryItemTypes samplingItemType, double value)
        {
            switch (samplingItemType)
            {
            case SamplingTelemetryItemTypes.Request:
                Interlocked.Exchange(ref this.requestSampleRate, value);
                break;

            case SamplingTelemetryItemTypes.Message:
                Interlocked.Exchange(ref this.messageSampleRate, value);
                break;

            case SamplingTelemetryItemTypes.RemoteDependency:
                Interlocked.Exchange(ref this.dependencySampleRate, value);
                break;

            case SamplingTelemetryItemTypes.Event:
                Interlocked.Exchange(ref this.eventSampleRate, value);
                break;

            case SamplingTelemetryItemTypes.Exception:
                Interlocked.Exchange(ref this.exceptionSampleRate, value);
                break;

            case SamplingTelemetryItemTypes.PageView:
                Interlocked.Exchange(ref this.pageViewSampleRate, value);
                break;

            default:
                throw new ArgumentException("Unsupported Item Type", nameof(samplingItemType));
            }
        }
        /// <summary>
        /// Gets last known request sampling percentage for telemetry type.
        /// </summary>
        internal double GetLastObservedSamplingPercentage(SamplingTelemetryItemTypes samplingItemType)
        {
            switch (samplingItemType)
            {
            case SamplingTelemetryItemTypes.Request:
                return(this.requestSampleRate);

            case SamplingTelemetryItemTypes.Message:
                return(this.messageSampleRate);

            case SamplingTelemetryItemTypes.RemoteDependency:
                return(this.dependencySampleRate);

            case SamplingTelemetryItemTypes.Event:
                return(this.eventSampleRate);

            case SamplingTelemetryItemTypes.Exception:
                return(this.exceptionSampleRate);

            case SamplingTelemetryItemTypes.PageView:
                return(this.pageViewSampleRate);

            default:
                throw new ArgumentException("Unsupported Item Type", nameof(samplingItemType));
            }
        }
 private bool IsSamplingApplicable(SamplingTelemetryItemTypes telemetryItemTypeFlag)
 {
     if (this.includedTypesFlags == SamplingTelemetryItemTypes.None)
     {
         // default value
         return(true);
     }
     else
     {
         return(this.includedTypesFlags.HasFlag(telemetryItemTypeFlag));
     }
 }
Beispiel #4
0
        private bool IsSamplingApplicable(SamplingTelemetryItemTypes telemetryItemTypeFlag)
        {
            if (this.excludedTypesFlags.HasFlag(telemetryItemTypeFlag))
            {
                return(false);
            }

            if (this.includedTypesFlags != SamplingTelemetryItemTypes.None && !this.includedTypesFlags.HasFlag(telemetryItemTypeFlag))
            {
                return(false);
            }

            return(true);
        }
Beispiel #5
0
        private SamplingTelemetryItemTypes PopulateSamplingFlagsFromTheInput(string input)
        {
            SamplingTelemetryItemTypes samplingTypeFlags = SamplingTelemetryItemTypes.None;

            if (!string.IsNullOrEmpty(input))
            {
                string[] splitList = input.Split(this.listSeparators, StringSplitOptions.RemoveEmptyEntries);
                foreach (string item in splitList)
                {
                    if (this.allowedTypes.ContainsKey(item))
                    {
                        switch (item.ToUpperInvariant())
                        {
                        case RequestTelemetryName:
                            samplingTypeFlags |= SamplingTelemetryItemTypes.Request;
                            break;

                        case DependencyTelemetryName:
                            samplingTypeFlags |= SamplingTelemetryItemTypes.RemoteDependency;
                            break;

                        case ExceptionTelemetryName:
                            samplingTypeFlags |= SamplingTelemetryItemTypes.Exception;
                            break;

                        case PageViewTelemetryName:
                            samplingTypeFlags |= SamplingTelemetryItemTypes.PageView;
                            break;

                        case TraceTelemetryName:
                            samplingTypeFlags |= SamplingTelemetryItemTypes.Message;
                            break;

                        case EventTelemetryName:
                            samplingTypeFlags |= SamplingTelemetryItemTypes.Event;
                            break;
                        }
                    }
                }
            }

            return(samplingTypeFlags);
        }
 internal long GetItems(SamplingTelemetryItemTypes telemetryItemTypeFlag)
 {
     // Returns known index in the counter array or default value 0 for unknown types
     this.typeToSamplingIndexMap.TryGetValue(telemetryItemTypeFlag, out int typeIndex);
     return(Interlocked.Read(ref this.proactivelySampledOutItems[typeIndex]));
 }
 internal void ClearItems(SamplingTelemetryItemTypes telemetryItemTypeFlag)
 {
     // Returns known index in the counter array or default value 0 for unknown types
     this.typeToSamplingIndexMap.TryGetValue(telemetryItemTypeFlag, out int typeIndex);
     Interlocked.Exchange(ref this.proactivelySampledOutItems[typeIndex], 0);
 }
 /// <summary>
 /// Sets last known request sampling percentage to skip initializers for sampled requests.
 /// </summary>
 public static void SetLastObservedSamplingPercentage(this TelemetryConfiguration configuration, SamplingTelemetryItemTypes samplingItemType, double value)
 {
     configuration.LastKnownSampleRateStore.SetLastObservedSamplingPercentage(samplingItemType, value);
 }
 /// <summary>
 /// Gets last known request sampling percentage to skip initializers for sampled requests.
 /// </summary>
 public static double GetLastObservedSamplingPercentage(this TelemetryConfiguration configuration, SamplingTelemetryItemTypes samplingItemType)
 {
     return(configuration.LastKnownSampleRateStore.GetLastObservedSamplingPercentage(samplingItemType));
 }
        /// <summary>
        /// Sets last known request sampling percentage to skip initializers for sampled requests.
        /// </summary>
        public static void SetLastObservedSamplingPercentage(this TelemetryConfiguration configuration, SamplingTelemetryItemTypes samplingItemType, double value)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            configuration.LastKnownSampleRateStore.SetLastObservedSamplingPercentage(samplingItemType, value);
        }
 private static SamplingTelemetryItemTypes ExcludeOperator(SamplingTelemetryItemTypes flags, SamplingTelemetryItemTypes value) => flags &= ~value;
        private static SamplingTelemetryItemTypes Calculate(Func <SamplingTelemetryItemTypes, SamplingTelemetryItemTypes, SamplingTelemetryItemTypes> operation, SamplingTelemetryItemTypes flags, string input)
        {
            if (!string.IsNullOrEmpty(input))
            {
                var allowedTypes = GetAllowedTypes();

                foreach (string item in SplitInput(input))
                {
                    if (allowedTypes.TryGetValue(item, out SamplingTelemetryItemTypes value))
                    {
                        flags = operation(flags, value);
                    }
                }
            }

            return(flags);
        }