/// <summary> /// Initializes this latency monitor with the given interval and number of samples over which /// the average latency is determined. /// </summary> /// <param name="latencyGrain"></param> /// <param name="interval"></param> /// <param name="numSamples"></param> /// <param name="performLatencyMeasurements"></param> /// <param name="endPointName"></param> public LatencyMonitor( ILatency latencyGrain, TimeSpan interval, int numSamples, bool performLatencyMeasurements, string endPointName = null ) { if (latencyGrain == null) { throw new ArgumentNullException(nameof(latencyGrain)); } if (interval < TimeSpan.Zero) { throw new ArgumentOutOfRangeException(nameof(interval), "A positive interval must be given"); } if (numSamples < 1) { throw new ArgumentOutOfRangeException(nameof(numSamples), "1 or more samples must be specified"); } _syncRoot = new object(); _interval = interval; _performLatencyMeasurements = performLatencyMeasurements; _latencyGrain = latencyGrain; _measurements = new TimeSpanStatisticsContainer(numSamples); _endPointName = endPointName; _stopwatch = new Stopwatch(); }
private void AppendDelta(TimeSpan currentValue, ref TimeSpan previousValue, TimeSpanStatisticsContainer container) { var delta = currentValue - previousValue; previousValue = currentValue; container.Enqueue(delta); }
public EndPointStatistics(IRemotingEndPoint endPoint) { if (endPoint == null) { throw new ArgumentNullException(nameof(endPoint)); } _endPoint = endPoint; const int numSamples = 60; _bytesSent = new StatisticsContainer(numSamples); _bytesReceived = new StatisticsContainer(numSamples); _messagesSent = new StatisticsContainer(numSamples); _messagesReceived = new StatisticsContainer(numSamples); _servantsCollected = new StatisticsContainer(numSamples); _proxiesCollected = new StatisticsContainer(numSamples); _gcTime = new TimeSpanStatisticsContainer(numSamples); }