diff --git a/exporter/metrics_exporter.go b/exporter/metrics_exporter.go new file mode 100644 index 00000000..670df45e --- /dev/null +++ b/exporter/metrics_exporter.go @@ -0,0 +1,44 @@ +// Copyright 2018, OpenCensus Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package exporter + +import ( + "context" + + "github.com/census-instrumentation/opencensus-service/data" +) + +// MetricsExporter is an interface that receives data.MetricsData, converts it as needed, and +// sends it to different destinations. +// +// ExportMetricsData receives data.MetricsData for processing by the exporter. +type MetricsExporter interface { + ExportMetricsData(ctx context.Context, md data.MetricsData) error +} + +// MultiMetricsExporters wraps multiple metrics exporters in a single one. +func MultiMetricsExporters(mes ...MetricsExporter) MetricsExporter { + return metricsExporters(mes) +} + +type metricsExporters []MetricsExporter + +// ExportMetricsData exports the MetricsData to all exporters wrapped by the current one. +func (mes metricsExporters) ExportMetricsData(ctx context.Context, md data.MetricsData) error { + for _, me := range mes { + _ = me.ExportMetricsData(ctx, md) + } + return nil +}