private protected override async Task CollectAndSerializeImplAsync(IMetricsSerializer serializer, CancellationToken cancel) { // We output sum. // We output count. // We output each bucket in order of increasing upper bound. await serializer.WriteMetricAsync(_sumIdentifier, _sum.Value, cancel); await serializer.WriteMetricAsync(_countIdentifier, _bucketCounts.Sum(b => b.Value), cancel); var cumulativeCount = 0L; for (var i = 0; i < _bucketCounts.Length; i++) { cumulativeCount += _bucketCounts[i].Value; await serializer.WriteMetricAsync(_bucketIdentifiers[i], cumulativeCount, cancel); } }
private protected override async Task CollectAndSerializeImplAsync(IMetricsSerializer serializer, CancellationToken cancel) { // We output sum. // We output count. // We output quantiles. var now = DateTime.UtcNow; double count; double sum; var values = new List <(double quantile, double value)>(_objectives.Count); lock (_bufLock) { lock (_lock) { // Swap bufs even if hotBuf is empty to set new hotBufExpTime. SwapBufs(now); FlushColdBuf(); count = _count; sum = _sum; for (var i = 0; i < _sortedObjectives.Length; i++) { var quantile = _sortedObjectives[i]; var value = _headStream.Count == 0 ? double.NaN : _headStream.Query(quantile); values.Add((quantile, value)); } } } await serializer.WriteMetricAsync(_sumIdentifier, sum, cancel); await serializer.WriteMetricAsync(_countIdentifier, count, cancel); for (var i = 0; i < values.Count; i++) { await serializer.WriteMetricAsync(_quantileIdentifiers[i], values[i].value, cancel); } }
internal override void CollectAndSerializeImpl(IMetricsSerializer serializer) { // We output sum. // We output count. // We output quantiles. var now = DateTime.UtcNow; double count; double sum; var values = new List <(double quantile, double value)>(_objectives.Count); lock (_bufLock) { lock (_lock) { // Swap bufs even if hotBuf is empty to set new hotBufExpTime. SwapBufs(now); FlushColdBuf(); count = _count; sum = _sum; for (var i = 0; i < _sortedObjectives.Length; i++) { var quantile = _sortedObjectives[i]; var value = _headStream.Count == 0 ? double.NaN : _headStream.Query(quantile); values.Add((quantile, value)); } } } serializer.WriteMetric(_sumIdentifier, sum); serializer.WriteMetric(_countIdentifier, count); for (var i = 0; i < values.Count; i++) { serializer.WriteMetric(_quantileIdentifiers[i], values[i].value); } }
internal abstract void CollectAndSerialize(IMetricsSerializer serializer);
private protected override void CollectAndSerializeImpl(IMetricsSerializer serializer) { serializer.WriteMetric(_identifier, Value); }
private protected override Task CollectAndSerializeImplAsync(IMetricsSerializer serializer, CancellationToken cancel) { return(serializer.WriteMetricAsync(_identifier, Value, cancel)); }
// Same as above, just only called if we really need to serialize this metric (if publish is true). private protected abstract Task CollectAndSerializeImplAsync(IMetricsSerializer serializer, CancellationToken cancel);
internal abstract Task CollectAndSerializeAsync(IMetricsSerializer serializer, CancellationToken cancel);
internal override void CollectAndSerializeImpl(IMetricsSerializer serializer) { serializer.WriteMetric(_identifier, Value); }
// Same as above, just only called if we really need to serialize this metric (if publish is true). private protected abstract void CollectAndSerializeImpl(IMetricsSerializer serializer);
public FileSink(IMetricsSerializer serializer, IFileNamingStrategy fileNamingStrategy) { _serializer = serializer; _fileNamingStrategy = fileNamingStrategy; }
public TextWriterSink(TextWriter writer, IMetricsSerializer serializer) { _writer = writer; _serializer = serializer; }