public PerformanceCounterValueCollector(MetricName name, string unitName, IPerformanceCounterProxy counter,
     bool disposesCounter)
     : base(name, unitName)
 {
     Counter = counter;
     DisposesCounter = disposesCounter;
 }
        private float GetPerfCounterValue_DeltaValue(IPerformanceCounterProxy proxy, ref float prevValue)
        {
            var currentPerfCounterVal = proxy.NextValue();
            var prevPerfCounterVal    = Interlocked.Exchange(ref prevValue, currentPerfCounterVal);

            return(currentPerfCounterVal - prevPerfCounterVal);
        }
 protected override void DisposeInternal()
 {
     if (DisposesCounter)
     {
         Counter.Dispose();
     }
     Counter = null;
 }
 protected override void DisposeInternal()
 {
     if (DisposesCounter)
     {
         Counter.Dispose();
     }
     Counter = null;
 }
        public bool Put(MetricName name, IPerformanceCounterProxy concreteCounter)
        {
            if (!Exists(name))
            {
                _cachedCounters[name] = new CachedPerformanceCounterProxy(() => concreteCounter);
                return true;
            }

            // already exists - not overriding
            return false;
        }
        public bool Put(MetricName name, IPerformanceCounterProxy concreteCounter)
        {
            if (!Exists(name))
            {
                _cachedCounters[name] = new CachedPerformanceCounterProxy(() => concreteCounter);
                return(true);
            }

            // already exists - not overriding
            return(false);
        }
        public void SetUp()
        {
            _instanceNameLookupCount    = 0;
            _expectedPerformanceCounter = Mock.Create <IPerformanceCounterProxy>();
            _createPerformanceCounter   = (_, __, ___) => _expectedPerformanceCounter;

            _performanceCounterCategory       = Mock.Create <IPerformanceCounterCategoryProxy>();
            _createPerformanceCounterCategory = _ => _performanceCounterCategory;

            _currentProcess = Mock.Create <IProcess>();
            _processStatic  = Mock.Create <IProcessStatic>();
            Mock.Arrange(() => _processStatic.GetCurrentProcess()).Returns(_currentProcess);

            _factory = new PerformanceCounterProxyFactory(_processStatic, CreatePerformanceCounterCategory, CreatePerformanceCounter);
        }
 private float GetPerfCounterValue_InducedCount(IPerformanceCounterProxy proxy)
 {
     return(GetPerfCounterValue_DeltaValue(proxy, ref _PrevInducedCount));
 }
 private float GetPerfCounterValue_Gen2CollectionCount(IPerformanceCounterProxy proxy)
 {
     return(GetPerfCounterValue_DeltaValue(proxy, ref _PrevGen2CollectionCount));
 }
 private float GetPerfCounterValue_Raw(IPerformanceCounterProxy proxy)
 {
     return(proxy.NextValue());
 }
 public PerformanceCounterValueCollector(MetricName name, string unitName, IPerformanceCounterProxy counter,
                                         bool disposesCounter) : base(name, unitName)
 {
     Counter         = counter;
     DisposesCounter = disposesCounter;
 }