Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/pkg/traces/pushreceiver/factory.go
4094 views
1
package pushreceiver
2
3
import (
4
"context"
5
6
"go.opentelemetry.io/collector/component"
7
"go.opentelemetry.io/collector/config"
8
"go.opentelemetry.io/collector/consumer"
9
)
10
11
const (
12
//TypeStr for push receiver.
13
TypeStr = "push_receiver"
14
)
15
16
// Type returns the receiver type that PushReceiverFactory produces
17
func (f Factory) Type() config.Type {
18
return TypeStr
19
}
20
21
// NewFactory creates a new push receiver factory.
22
func NewFactory() component.ReceiverFactory {
23
return &Factory{}
24
}
25
26
// CreateDefaultConfig creates a default push receiver config.
27
func (f *Factory) CreateDefaultConfig() config.Receiver {
28
s := config.NewReceiverSettings(config.NewComponentIDWithName(TypeStr, TypeStr))
29
return &s
30
}
31
32
// Factory is a factory that sneakily exposes a Traces consumer for use within the agent.
33
type Factory struct {
34
component.Factory
35
Consumer consumer.Traces
36
}
37
38
// MetricsReceiverStability implements component.ReceiverFactory.
39
func (f *Factory) MetricsReceiverStability() component.StabilityLevel {
40
return component.StabilityLevelUndefined
41
}
42
43
// LogsReceiverStability implements component.ReceiverFactory.
44
func (f *Factory) LogsReceiverStability() component.StabilityLevel {
45
return component.StabilityLevelUndefined
46
}
47
48
// TracesReceiverStability implements component.ReceiverFactory.
49
func (f *Factory) TracesReceiverStability() component.StabilityLevel {
50
return component.StabilityLevelUndefined
51
}
52
53
// CreateTracesReceiver creates a stub receiver while also sneakily keeping a reference to the provided Traces consumer.
54
func (f *Factory) CreateTracesReceiver(
55
_ context.Context,
56
_ component.ReceiverCreateSettings,
57
_ config.Receiver,
58
c consumer.Traces,
59
) (component.TracesReceiver, error) {
60
61
r, err := newPushReceiver()
62
f.Consumer = c
63
64
return r, err
65
}
66
67
// CreateMetricsReceiver returns an error because metrics are not supported by push receiver.
68
func (f *Factory) CreateMetricsReceiver(ctx context.Context, set component.ReceiverCreateSettings,
69
cfg config.Receiver, nextConsumer consumer.Metrics) (component.MetricsReceiver, error) {
70
71
return nil, component.ErrDataTypeIsNotSupported
72
}
73
74
// CreateLogsReceiver returns an error because logs are not supported by push receiver.
75
func (f *Factory) CreateLogsReceiver(ctx context.Context, set component.ReceiverCreateSettings,
76
cfg config.Receiver, nextConsumer consumer.Logs) (component.LogsReceiver, error) {
77
78
return nil, component.ErrDataTypeIsNotSupported
79
}
80
81