public new PageViewPerfData DeepClone()
        {
            var other = new PageViewPerfData();

            this.ApplyProperties(other);
            return(other);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="PageViewPerformanceTelemetry"/> class by cloning an existing instance.
 /// </summary>
 /// <param name="source">Source instance of <see cref="PageViewPerformanceTelemetry"/> to clone from.</param>
 private PageViewPerformanceTelemetry(PageViewPerformanceTelemetry source)
 {
     this.Data = source.Data.DeepClone();
     this.Context = source.Context.DeepClone(this.Data.properties);
     this.extension = source.extension?.DeepClone();
     this.samplingPercentage = source.samplingPercentage;
     this.ProactiveSamplingDecision = source.ProactiveSamplingDecision;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="PageViewPerformanceTelemetry"/> class by cloning an existing instance.
 /// </summary>
 /// <param name="source">Source instance of <see cref="PageViewPerformanceTelemetry"/> to clone from.</param>
 private PageViewPerformanceTelemetry(PageViewPerformanceTelemetry source)
 {
     this.Data               = source.Data.DeepClone();
     this.Context            = source.Context.DeepClone(this.Data.properties);
     this.extension          = source.extension?.DeepClone();
     this.samplingPercentage = source.samplingPercentage;
     this.IsSampledOutAtHead = source.IsSampledOutAtHead;
 }
예제 #4
0
        /// <summary>
        /// Create handler for page view performance telemetry.
        /// </summary>
        private Action <ITelemetry> CreateHandlerForPageViewPerformanceTelemetry(EventSource eventSource, MethodInfo writeGenericMethod, Type eventSourceOptionsType, PropertyInfo eventSourceOptionsKeywordsProperty)
        {
            var eventSourceOptions = Activator.CreateInstance(eventSourceOptionsType);
            var keywords           = Keywords.PageViews;

            eventSourceOptionsKeywordsProperty.SetValue(eventSourceOptions, keywords);
            var dummyPageViewPerfData = new PageViewPerfData();
            var writeMethod           = writeGenericMethod.MakeGenericMethod(new
            {
                PartA_iKey             = this.dummyPartAiKeyValue,
                PartA_Tags             = this.dummyPartATagsValue,
                PartB_PageViewPerfData = new
                {
                    // The properties and layout should be the same as PageViewPerfData_types.cs (EventData_types.cs)
                    dummyPageViewPerfData.perfTotal,
                    dummyPageViewPerfData.networkConnect,
                    dummyPageViewPerfData.sentRequest,
                    dummyPageViewPerfData.receivedResponse,
                    dummyPageViewPerfData.domProcessing,
                    dummyPageViewPerfData.url,
                    dummyPageViewPerfData.duration,
                    dummyPageViewPerfData.ver,
                    dummyPageViewPerfData.name,
                    dummyPageViewPerfData.properties,
                    dummyPageViewPerfData.measurements,
                },
            }.GetType());

            return((item) =>
            {
                if (this.EventSourceInternal.IsEnabled(EventLevel.Verbose, keywords))
                {
                    var telemetryItem = item as PageViewTelemetry;
                    CopyGlobalPropertiesIfRequired(item, telemetryItem.Properties);
                    item.Sanitize();
                    var data = telemetryItem.Data;
                    var extendedData = new
                    {
                        // The properties and layout should be the same as the anonymous type in the above MakeGenericMethod
                        PartA_iKey = telemetryItem.Context.InstrumentationKey,
                        PartA_Tags = telemetryItem.Context.SanitizedTags,
                        PartB_PageViewPerfData = new
                        {
                            data.url,
                            data.duration,
                            data.ver,
                            data.name,
                            data.properties,
                            data.measurements,
                        },
                    };

                    writeMethod.Invoke(eventSource, new object[] { PageViewTelemetry.TelemetryName, eventSourceOptions, extendedData });
                }
            });
        }
        protected override void ApplyProperties(EventData other)
        {
            base.ApplyProperties(other);
            PageViewPerfData otherPageViewPerf = other as PageViewPerfData;

            if (otherPageViewPerf != null)
            {
                otherPageViewPerf.domProcessing    = this.domProcessing;
                otherPageViewPerf.perfTotal        = this.perfTotal;
                otherPageViewPerf.networkConnect   = this.networkConnect;
                otherPageViewPerf.sentRequest      = this.sentRequest;
                otherPageViewPerf.receivedResponse = this.receivedResponse;
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="PageViewPerformanceTelemetry"/> class by cloning an existing instance.
 /// </summary>
 /// <param name="source">Source instance of <see cref="PageViewPerformanceTelemetry"/> to clone from.</param>
 private PageViewPerformanceTelemetry(PageViewPerformanceTelemetry source)
 {
     this.Data      = source.Data.DeepClone();
     this.Context   = source.Context.DeepClone(this.Data.properties);
     this.extension = source.extension?.DeepClone();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="PageViewPerformanceTelemetry"/> class.
 /// </summary>
 public PageViewPerformanceTelemetry()
 {
     this.Data    = new PageViewPerfData();
     this.Context = new TelemetryContext(this.Data.properties);
 }