opentelemetry-collector/consumer/consumertest/consumer.go

63 lines
1.8 KiB
Go

// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package consumertest // import "go.opentelemetry.io/collector/consumer/consumertest"
import (
"context"
"go.opentelemetry.io/collector/consumer"
"go.opentelemetry.io/collector/consumer/xconsumer"
"go.opentelemetry.io/collector/pdata/plog"
"go.opentelemetry.io/collector/pdata/pmetric"
"go.opentelemetry.io/collector/pdata/pprofile"
"go.opentelemetry.io/collector/pdata/ptrace"
)
// Consumer is a convenience interface that implements all consumer interfaces.
// It has a private function on it to forbid external users from implementing it
// and, as a result, to allow us to add extra functions without breaking
// compatibility.
type Consumer interface {
// Capabilities to implement the base consumer functionality.
Capabilities() consumer.Capabilities
// ConsumeTraces to implement the consumer.Traces.
ConsumeTraces(context.Context, ptrace.Traces) error
// ConsumeMetrics to implement the consumer.Metrics.
ConsumeMetrics(context.Context, pmetric.Metrics) error
// ConsumeLogs to implement the consumer.Logs.
ConsumeLogs(context.Context, plog.Logs) error
// ConsumeProfiles to implement the xconsumer.Profiles.
ConsumeProfiles(context.Context, pprofile.Profiles) error
unexported()
}
var (
_ consumer.Logs = Consumer(nil)
_ consumer.Metrics = Consumer(nil)
_ consumer.Traces = Consumer(nil)
_ xconsumer.Profiles = Consumer(nil)
)
type nonMutatingConsumer struct{}
// Capabilities returns the base consumer capabilities.
func (bc nonMutatingConsumer) Capabilities() consumer.Capabilities {
return consumer.Capabilities{MutatesData: false}
}
type baseConsumer struct {
nonMutatingConsumer
consumer.ConsumeTracesFunc
consumer.ConsumeMetricsFunc
consumer.ConsumeLogsFunc
xconsumer.ConsumeProfilesFunc
}
func (bc baseConsumer) unexported() {}