mirror of
https://github.com/hanzoai/telemetry.git
synced 2026-10-30 20:01:49 +00:00
The problem here is that we have components like batchprocessor or others which are keeping a reference of the data and eventually modifying them without any concurrent access protection. Hence, it is required for the callers to not access any data that were passed downstream. This is not a backwards incompatible change, since pdata is not thread-safe this is a MUST to have here (consider a bug for not being documented) otherwise things will not work in the processing pipelines. Signed-off-by: Bogdan Drutu <[email protected]>
45 lines
1.3 KiB
Go
45 lines
1.3 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package consumer // import "go.opentelemetry.io/collector/consumer"
|
|
|
|
import (
|
|
"context"
|
|
|
|
"go.opentelemetry.io/collector/consumer/internal"
|
|
"go.opentelemetry.io/collector/pdata/ptrace"
|
|
)
|
|
|
|
// Traces is an interface that receives ptrace.Traces, processes it
|
|
// as needed, and sends it to the next processing node if any or to the destination.
|
|
type Traces interface {
|
|
internal.BaseConsumer
|
|
// ConsumeTraces processes the traces. After the function returns, the traces are no longer accessible,
|
|
// and accessing them is considered undefined behavior.
|
|
ConsumeTraces(ctx context.Context, td ptrace.Traces) error
|
|
}
|
|
|
|
// ConsumeTracesFunc is a helper function that is similar to ConsumeTraces.
|
|
type ConsumeTracesFunc func(ctx context.Context, td ptrace.Traces) error
|
|
|
|
// ConsumeTraces calls f(ctx, td).
|
|
func (f ConsumeTracesFunc) ConsumeTraces(ctx context.Context, td ptrace.Traces) error {
|
|
return f(ctx, td)
|
|
}
|
|
|
|
type baseTraces struct {
|
|
*internal.BaseImpl
|
|
ConsumeTracesFunc
|
|
}
|
|
|
|
// NewTraces returns a Traces configured with the provided options.
|
|
func NewTraces(consume ConsumeTracesFunc, options ...Option) (Traces, error) {
|
|
if consume == nil {
|
|
return nil, errNilFunc
|
|
}
|
|
return &baseTraces{
|
|
BaseImpl: internal.NewBaseImpl(options...),
|
|
ConsumeTracesFunc: consume,
|
|
}, nil
|
|
}
|