/// <inheritdoc/> void IMetricReadingWriter.Write(IMetricReadingBatch batch, DateTime timestamp) { foreach (IMetricReadingWriter metric in GetMetrics()) { metric.Write(batch, timestamp); } }
/// <summary> /// Writes all readings for all metrics in specified enumerable of <see cref="MetricSource"/>. /// </summary> public static void WriteReadings(this IEnumerable <MetricSource> sources, IMetricReadingBatch batch, DateTime timestamp) { foreach (var source in sources) { source.Write(batch, timestamp); } }
/// <inheritdoc/> public void Write(IMetricReadingBatch batch, DateTime timestamp) { var metrics = _metrics; for (var i = 0; i < metrics.Length; i++) { metrics[i].Write(batch, timestamp); } }
/// <inheritdoc/> protected override void Write(IMetricReadingBatch batch, DateTime timestamp) { var countSnapshot = Interlocked.Exchange(ref _count, 0); if (countSnapshot == 0) { return; } batch.Add( CreateReading(countSnapshot, timestamp) ); }
/// <inheritdoc/> protected override void Write(IMetricReadingBatch batch, DateTime timestamp) { var val = _getCountFunc(); if (!val.HasValue || val.Value == 0) { return; } batch.Add( CreateReading(val.Value, timestamp) ); }
/// <inheritdoc/> protected override void Write(IMetricReadingBatch batch, DateTime timestamp) { var val = _getValueFunc(); if (!val.HasValue || double.IsNaN(val.Value)) { return; } batch.Add( CreateReading(val.Value, timestamp) ); }
/// <inheritdoc/> protected override void Write(IMetricReadingBatch batch, DateTime timestamp) { var value = Interlocked.Exchange(ref _value, double.NaN); if (double.IsNaN(value)) { return; } batch.Add( CreateReading(value, timestamp) ); }
/// <inheritdoc/> protected override void Write(IMetricReadingBatch batch, DateTime timestamp) { var pending = Interlocked.Exchange(ref _pendingMetrics, new ConcurrentBag <PendingMetric>()); if (pending == null || pending.Count == 0) { return; } foreach (var p in pending) { batch.Add( CreateReading(p.Value, p.Time) ); } }
/// <summary> /// Writes the readings for a metric into the specified <see cref="IMetricReadingBatch"/>. /// </summary> /// <param name="batch"> /// <see cref="IMetricReadingBatch"/> to write metrics into. /// </param> /// <param name="timestamp"> /// Timestamp applied to all readings. /// </param> protected abstract void Write(IMetricReadingBatch batch, DateTime timestamp);
/// <inheritdoc/> void IMetricReadingWriter.Write(IMetricReadingBatch batch, DateTime timestamp) => Write(batch, timestamp);