-
Notifications
You must be signed in to change notification settings - Fork 485
/
traces_exporter.go
41 lines (33 loc) · 1005 Bytes
/
traces_exporter.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package app_agent_receiver
import (
"context"
"go.opentelemetry.io/collector/consumer"
)
type tracesConsumerGetter func() (consumer.Traces, error)
// TracesExporter will send traces to a traces instance
type TracesExporter struct {
getTracesConsumer tracesConsumerGetter
}
// NewTracesExporter creates a trace exporter for the app agent receiver.
func NewTracesExporter(getTracesConsumer tracesConsumerGetter) AppAgentReceiverExporter {
return &TracesExporter{getTracesConsumer}
}
// Name of the exporter, for logging purposes
func (te *TracesExporter) Name() string {
return "traces exporter"
}
// Export implements the AppDataExporter interface
func (te *TracesExporter) Export(ctx context.Context, payload Payload) error {
if payload.Traces == nil {
return nil
}
consumer, err := te.getTracesConsumer()
if err != nil {
return err
}
return consumer.ConsumeTraces(ctx, payload.Traces.Traces)
}
// Static typecheck tests
var (
_ AppAgentReceiverExporter = (*TracesExporter)(nil)
)