Files
Paulo DiasandGitHub 2832d3cfec [chore][connector] run make modernize (#13963)
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description

Run the `make modernize` tool.

https://pkg.go.dev/golang.org/x/tools/gopls/internal/analysis/modernize

Signed-off-by: Paulo Dias <[email protected]>
2025-10-10 07:45:02 +00:00

56 lines
1.3 KiB
Go

// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package internal // import "go.opentelemetry.io/collector/connector/internal"
import (
"errors"
"fmt"
"maps"
"go.uber.org/multierr"
"go.opentelemetry.io/collector/pipeline"
)
type BaseRouter[T any] struct {
fanout func([]T) T
Consumers map[pipeline.ID]T
}
func NewBaseRouter[T any](fanout func([]T) T, cm map[pipeline.ID]T) BaseRouter[T] {
consumers := make(map[pipeline.ID]T, len(cm))
maps.Copy(consumers, cm)
return BaseRouter[T]{fanout: fanout, Consumers: consumers}
}
func (r *BaseRouter[T]) PipelineIDs() []pipeline.ID {
ids := make([]pipeline.ID, 0, len(r.Consumers))
for id := range r.Consumers {
ids = append(ids, id)
}
return ids
}
func (r *BaseRouter[T]) Consumer(pipelineIDs ...pipeline.ID) (T, error) {
var ret T
if len(pipelineIDs) == 0 {
return ret, errors.New("missing consumers")
}
consumers := make([]T, 0, len(pipelineIDs))
var errors error
for _, pipelineID := range pipelineIDs {
c, ok := r.Consumers[pipelineID]
if ok {
consumers = append(consumers, c)
} else {
errors = multierr.Append(errors, fmt.Errorf("missing consumer: %q", pipelineID))
}
}
if errors != nil {
// TODO potentially this could return a NewTraces with the valid consumers
return ret, errors
}
return r.fanout(consumers), nil
}