opentelemetry-collector/connector/traces_router.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"
)
// TracesRouterAndConsumer feeds the first consumer.Traces in each of the specified pipelines.
type TracesRouterAndConsumer interface {
consumer.Traces
Consumer(...pipeline.ID) (consumer.Traces, error)
PipelineIDs() []pipeline.ID
privateFunc()
}
type tracesRouter struct {
consumer.Traces
internal.BaseRouter[consumer.Traces]
}
func NewTracesRouter(cm map[pipeline.ID]consumer.Traces) TracesRouterAndConsumer {
consumers := make([]consumer.Traces, 0, len(cm))
for _, cons := range cm {
consumers = append(consumers, cons)
}
return &tracesRouter{
Traces: fanoutconsumer.NewTraces(consumers),
BaseRouter: internal.NewBaseRouter(fanoutconsumer.NewTraces, cm),
}
}
func (r *tracesRouter) privateFunc() {}