Line data Source code
1 : // Copyright The OpenTelemetry Authors
2 : // SPDX-License-Identifier: Apache-2.0
3 :
4 : import '../span.dart';
5 : import 'span_exporter.dart';
6 :
7 : /// A composite exporter that delegates export operations to multiple exporters.
8 : ///
9 : /// This exporter combines multiple exporters, making it possible to export spans
10 : /// to multiple backend systems simultaneously.
11 : /// Used for debugging, it prints exported spans
12 : class CompositeExporter extends SpanExporter {
13 : /// The list of exporters to delegate to.
14 : final List<SpanExporter> spanExporters;
15 :
16 : /// Creates a new CompositeExporter with the specified exporters.
17 : ///
18 : /// @param spanExporters The list of exporters to delegate to
19 1 : CompositeExporter(this.spanExporters);
20 :
21 1 : @override
22 : Future<void> export(List<Span> spans) async {
23 2 : for (var exporter in spanExporters) {
24 1 : await exporter.export(spans);
25 : }
26 : }
27 :
28 1 : @override
29 : Future<void> forceFlush() async {
30 2 : for (var exporter in spanExporters) {
31 1 : await exporter.forceFlush();
32 : }
33 : }
34 :
35 1 : @override
36 : Future<void> shutdown() async {
37 2 : for (var exporter in spanExporters) {
38 1 : await exporter.shutdown();
39 : }
40 : }
41 : }
|