collect method

collect all metrics and samples that are part of this Collector.

Implementation

@override
Future<Iterable<MetricFamilySamples>> collect() async {
  await collectCallback?.call(this);

  final samples = <Sample>[];

  _children.forEach((labelValues, child) {
    final labelNamesWithQuantile = List.of(labelNames)..add(quantileLabel);
    final values = child.values;

    for (var i = 0; i < quantiles.length; ++i) {
      final q = quantiles[i].quantile;
      samples.add(Sample(name, labelNamesWithQuantile,
          List.of(labelValues)..add(formatDouble(q)), values[q]));
    }

    samples
        .add(Sample('${name}_count', labelNames, labelValues, child.count));
    samples.add(Sample('${name}_sum', labelNames, labelValues, child.sum));
  });

  return [MetricFamilySamples(name, MetricType.summary, help, samples)];
}