}                           // Only allow subclassing from this assembly

        public static IEnumerable <ProviderInfo> Merge(IEnumerable <ProviderInfo> info)
        {
            Dictionary <Guid, UserProviderInfo> userInfo = new Dictionary <Guid, UserProviderInfo>();
            KernelProviderInfo kernelInfo = new KernelProviderInfo();
            Dictionary <string, CpuCounterInfo> cpuInfo = new Dictionary <string, CpuCounterInfo>();

            foreach (var i in info)
            {
                i.MergeInto(userInfo, kernelInfo, cpuInfo);
            }

            if (kernelInfo.Keywords != 0)
            {
                yield return(kernelInfo);
            }

            foreach (var i in userInfo.Values)
            {
                yield return(i);
            }

            foreach (var i in cpuInfo.Values)
            {
                yield return(i);
            }
        }
 internal override void MergeInto(Dictionary<Guid, UserProviderInfo> userInfo, KernelProviderInfo kernelInfo, Dictionary<string, CpuCounterInfo> cpuInfo)
 {
     CpuCounterInfo current;
     if (!cpuInfo.TryGetValue(CounterName, out current))
     {
         cpuInfo.Add(CounterName, this);
     }
     else
     {
         cpuInfo[CounterName] = new CpuCounterInfo()
         {
             CounterName = this.CounterName,
             Interval = Math.Min(current.Interval, this.Interval)
         };
     }
 }
 internal override void MergeInto(Dictionary<Guid, UserProviderInfo> userInfo, KernelProviderInfo kernelInfo, Dictionary<string, CpuCounterInfo> cpuInfo)
 {
     UserProviderInfo current;
     if (!userInfo.TryGetValue(ProviderGuid, out current))
     {
         userInfo.Add(ProviderGuid, this);
     }
     else
     {
         userInfo[ProviderGuid] = new UserProviderInfo()
         {
             ProviderGuid = this.ProviderGuid,
             Keywords = current.Keywords | this.Keywords,
             Level = (this.Level > current.Level) ? this.Level : current.Level
         };
     }
 }
        internal ProviderInfo() { } // Only allow subclassing from this assembly

        public static IEnumerable<ProviderInfo> Merge(IEnumerable<ProviderInfo> info)
        {
            Dictionary<Guid, UserProviderInfo> userInfo = new Dictionary<Guid, UserProviderInfo>();
            KernelProviderInfo kernelInfo = new KernelProviderInfo();
            Dictionary<string, CpuCounterInfo> cpuInfo = new Dictionary<string, CpuCounterInfo>();

            foreach (var i in info)
                i.MergeInto(userInfo, kernelInfo, cpuInfo);

            if (kernelInfo.Keywords != 0)
                yield return kernelInfo;

            foreach (var i in userInfo.Values)
                yield return i;

            foreach (var i in cpuInfo.Values)
                yield return i;
        }
 internal override void MergeInto(Dictionary <Guid, UserProviderInfo> userInfo, KernelProviderInfo kernelInfo, Dictionary <string, CpuCounterInfo> cpuInfo)
 {
     kernelInfo.Keywords      |= Keywords;
     kernelInfo.StackKeywords |= StackKeywords;
 }
Beispiel #6
0
 internal override void MergeInto(Dictionary <Guid, UserProviderInfo> userInfo, KernelProviderInfo kernelInfo, Dictionary <string, CpuCounterInfo> cpuInfo)
 {
     if (!cpuInfo.TryGetValue(CounterName, out var current))
     {
         cpuInfo.Add(CounterName, this);
     }
     else
     {
         cpuInfo[CounterName] = new CpuCounterInfo()
         {
             CounterName = CounterName,
             Interval    = Math.Min(current.Interval, Interval)
         };
     }
 }
 internal abstract void MergeInto(Dictionary <Guid, UserProviderInfo> userInfo, KernelProviderInfo kernelInfo, Dictionary <string, CpuCounterInfo> cpuInfo);
 internal override void MergeInto(Dictionary<Guid, UserProviderInfo> userInfo, KernelProviderInfo kernelInfo, Dictionary<string, CpuCounterInfo> cpuInfo)
 {
     kernelInfo.Keywords |= Keywords;
     kernelInfo.StackKeywords |= StackKeywords;
 }
 internal abstract void MergeInto(Dictionary<Guid, UserProviderInfo> userInfo, KernelProviderInfo kernelInfo, Dictionary<string, CpuCounterInfo> cpuInfo);
Beispiel #10
0
        internal override void MergeInto(Dictionary <Guid, UserProviderInfo> userInfo, KernelProviderInfo kernelInfo, Dictionary <string, CpuCounterInfo> cpuInfo)
        {
            UserProviderInfo current;

            if (!userInfo.TryGetValue(ProviderGuid, out current))
            {
                userInfo.Add(ProviderGuid, this);
            }
            else
            {
                userInfo[ProviderGuid] = new UserProviderInfo()
                {
                    ProviderGuid = this.ProviderGuid,
                    Keywords     = current.Keywords | this.Keywords,
                    Level        = (this.Level > current.Level) ? this.Level : current.Level
                };
            }
        }