Line data Source code
1 : // Copyright The OpenTelemetry Authors
2 : // SPDX-License-Identifier: Apache-2.0
3 :
4 : import '../../resource/resource.dart';
5 : import 'metric.dart';
6 :
7 : /// MetricData represents a collection of metrics to be exported.
8 : class MetricData {
9 : /// The resource associated with the metrics.
10 : final Resource? resource;
11 :
12 : /// The collection of metrics.
13 : final List<Metric> metrics;
14 :
15 : /// Creates a new MetricData instance.
16 117 : MetricData({this.resource, required this.metrics});
17 :
18 : /// Creates an empty MetricData instance.
19 7 : factory MetricData.empty() {
20 14 : return MetricData(metrics: []);
21 : }
22 :
23 : /// Returns a new MetricData instance with the metrics filtered by the given predicate.
24 1 : MetricData filter(bool Function(Metric metric) predicate) {
25 1 : return MetricData(
26 1 : resource: resource,
27 3 : metrics: metrics.where(predicate).toList(),
28 : );
29 : }
30 :
31 : /// Returns a new MetricData instance with the given metrics added.
32 1 : MetricData merge(MetricData other) {
33 1 : return MetricData(
34 2 : resource: resource ?? other.resource,
35 3 : metrics: [...metrics, ...other.metrics],
36 : );
37 : }
38 : }
|