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 labelNamesWithLe = List.of(labelNames)..add(leLabel);

    for (var i = 0; i < buckets.length; ++i) {
      samples.add(Sample(
        '${name}_bucket',
        labelNamesWithLe,
        List.of(labelValues)..add(formatDouble(buckets[i])),
        child._bucketValues[i],
      ));
    }

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

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