CounterSample.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Services / Monitoring / system / Diagnosticts / CounterSample.cs / 1 / CounterSample.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Diagnostics { 
 
    using System.Diagnostics;
 
    using System;

    /// 
    ///     A struct holding the raw data for a performance counter. 
    /// 
    public struct CounterSample { 
        private long rawValue; 
        private long baseValue;
        private long timeStamp; 
        private long counterFrequency;
        private PerformanceCounterType counterType;
        private long timeStamp100nSec;
        private long systemFrequency; 
        private long counterTimeStamp;
 
        // Dummy holder for an empty sample 
        /// 
        ///    [To be supplied.] 
        /// 
        public static CounterSample Empty = new CounterSample(0, 0, 0, 0, 0, 0, PerformanceCounterType.NumberOfItems32);

        ///  
        ///    [To be supplied.]
        ///  
        public CounterSample(long rawValue, long baseValue, long counterFrequency, long systemFrequency, long timeStamp, long timeStamp100nSec, PerformanceCounterType counterType) { 
            this.rawValue = rawValue;
            this.baseValue = baseValue; 
            this.timeStamp = timeStamp;
            this.counterFrequency = counterFrequency;
            this.counterType = counterType;
            this.timeStamp100nSec = timeStamp100nSec; 
            this.systemFrequency = systemFrequency;
            this.counterTimeStamp = 0; 
        } 

        ///  
        ///    [To be supplied.]
        /// 
        public CounterSample(long rawValue, long baseValue, long counterFrequency, long systemFrequency, long timeStamp, long timeStamp100nSec, PerformanceCounterType counterType, long counterTimeStamp) {
            this.rawValue = rawValue; 
            this.baseValue = baseValue;
            this.timeStamp = timeStamp; 
            this.counterFrequency = counterFrequency; 
            this.counterType = counterType;
            this.timeStamp100nSec = timeStamp100nSec; 
            this.systemFrequency = systemFrequency;
            this.counterTimeStamp = counterTimeStamp;
        }
 
        /// 
        ///      Raw value of the counter. 
        ///  
        public long RawValue {
            get { 
                return this.rawValue;
            }
        }
 
        internal ulong UnsignedRawValue {
             get { 
                return (ulong)this.rawValue; 
            }
        } 

        /// 
        ///      Optional base raw value for the counter (only used if multiple counter based).
        ///  
        public long BaseValue {
            get { 
                return this.baseValue; 
            }
        } 

        /// 
        ///      Raw system frequency
        ///  
        public long SystemFrequency {
            get { 
               return this.systemFrequency; 
            }
        } 

        /// 
        ///      Raw counter frequency
        ///  
        public long CounterFrequency {
            get { 
                return this.counterFrequency; 
            }
        } 

        /// 
        ///      Raw counter frequency
        ///  
        public long CounterTimeStamp {
            get { 
                return this.counterTimeStamp; 
            }
        } 

        /// 
        ///      Raw timestamp
        ///  
        public long TimeStamp {
            get { 
                return this.timeStamp; 
            }
        } 

        /// 
        ///      Raw high fidelity timestamp
        ///  
        public long TimeStamp100nSec {
            get { 
                return this.timeStamp100nSec; 
            }
        } 

        /// 
        ///      Counter type
        ///  
        public PerformanceCounterType CounterType {
            get { 
                return this.counterType; 
            }
        } 

        /// 
        ///    Static functions to calculate the performance value off the sample
        ///  
        public static float Calculate(CounterSample counterSample) {
            return CounterSampleCalculator.ComputeCounterValue(counterSample); 
        } 

        ///  
        ///    Static functions to calculate the performance value off the samples
        /// 
        public static float Calculate(CounterSample counterSample, CounterSample nextCounterSample) {
            return CounterSampleCalculator.ComputeCounterValue(counterSample, nextCounterSample); 
        }
 
        public override bool Equals(Object o) { 
            return ( o is CounterSample) && Equals((CounterSample)o);
        } 

        public bool Equals(CounterSample sample) {
            return (rawValue == sample.rawValue) &&
                       (baseValue == sample.baseValue) && 
                       (timeStamp == sample.timeStamp) &&
                       (counterFrequency == sample.counterFrequency) && 
                       (counterType == sample.counterType) && 
                       (timeStamp100nSec == sample.timeStamp100nSec) &&
                       (systemFrequency == sample.systemFrequency) && 
                       (counterTimeStamp == sample.counterTimeStamp);
        }

        public override int GetHashCode() { 
            return rawValue.GetHashCode();
        } 
 
        public static bool operator ==(CounterSample a, CounterSample b) {
            return a.Equals(b); 
        }

        public static bool operator !=(CounterSample a, CounterSample b) {
            return !(a.Equals(b)); 
        }
 
    } 
}


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK