38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package connector // import "go.opentelemetry.io/collector/connector"
|
|
|
|
import (
|
|
"go.opentelemetry.io/collector/connector/internal"
|
|
"go.opentelemetry.io/collector/consumer"
|
|
"go.opentelemetry.io/collector/internal/fanoutconsumer"
|
|
"go.opentelemetry.io/collector/pipeline"
|
|
)
|
|
|
|
// MetricsRouterAndConsumer feeds the first consumer.Metrics in each of the specified pipelines.
|
|
type MetricsRouterAndConsumer interface {
|
|
consumer.Metrics
|
|
Consumer(...pipeline.ID) (consumer.Metrics, error)
|
|
PipelineIDs() []pipeline.ID
|
|
privateFunc()
|
|
}
|
|
|
|
type metricsRouter struct {
|
|
consumer.Metrics
|
|
internal.BaseRouter[consumer.Metrics]
|
|
}
|
|
|
|
func NewMetricsRouter(cm map[pipeline.ID]consumer.Metrics) MetricsRouterAndConsumer {
|
|
consumers := make([]consumer.Metrics, 0, len(cm))
|
|
for _, cons := range cm {
|
|
consumers = append(consumers, cons)
|
|
}
|
|
return &metricsRouter{
|
|
Metrics: fanoutconsumer.NewMetrics(consumers),
|
|
BaseRouter: internal.NewBaseRouter(fanoutconsumer.NewMetrics, cm),
|
|
}
|
|
}
|
|
|
|
func (r *metricsRouter) privateFunc() {}
|