Skip to content
This repository has been archived by the owner on Nov 7, 2022. It is now read-only.

Commit

Permalink
metrics/exporter: define MetricsExporter interface. (#219)
Browse files Browse the repository at this point in the history
  • Loading branch information
songy23 authored Nov 21, 2018
1 parent a35cc21 commit 5bd3780
Showing 1 changed file with 44 additions and 0 deletions.
44 changes: 44 additions & 0 deletions exporter/metrics_exporter.go
Original file line number Diff line number Diff line change
@@ -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
}

0 comments on commit 5bd3780

Please sign in to comment.