mirror of
https://github.com/hanzoai/telemetry.git
synced 2026-10-30 20:01:49 +00:00
Updates https://github.com/open-telemetry/opentelemetry-collector/issues/12747 Signed-off-by: Bogdan Drutu <[email protected]>
142 lines
4.1 KiB
Go
142 lines
4.1 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package otlpreceiver // import "go.opentelemetry.io/collector/receiver/otlpreceiver"
|
|
|
|
import (
|
|
spb "google.golang.org/genproto/googleapis/rpc/status"
|
|
"google.golang.org/protobuf/encoding/protojson"
|
|
"google.golang.org/protobuf/proto"
|
|
|
|
"go.opentelemetry.io/collector/pdata/plog/plogotlp"
|
|
"go.opentelemetry.io/collector/pdata/pmetric/pmetricotlp"
|
|
"go.opentelemetry.io/collector/pdata/pprofile/pprofileotlp"
|
|
"go.opentelemetry.io/collector/pdata/ptrace/ptraceotlp"
|
|
)
|
|
|
|
const (
|
|
pbContentType = "application/x-protobuf"
|
|
jsonContentType = "application/json"
|
|
)
|
|
|
|
var (
|
|
pbEncoder = &protoEncoder{}
|
|
jsEncoder = &jsonEncoder{}
|
|
)
|
|
|
|
type encoder interface {
|
|
unmarshalTracesRequest(buf []byte) (ptraceotlp.ExportRequest, error)
|
|
unmarshalMetricsRequest(buf []byte) (pmetricotlp.ExportRequest, error)
|
|
unmarshalLogsRequest(buf []byte) (plogotlp.ExportRequest, error)
|
|
unmarshalProfilesRequest(buf []byte) (pprofileotlp.ExportRequest, error)
|
|
|
|
marshalTracesResponse(ptraceotlp.ExportResponse) ([]byte, error)
|
|
marshalMetricsResponse(pmetricotlp.ExportResponse) ([]byte, error)
|
|
marshalLogsResponse(plogotlp.ExportResponse) ([]byte, error)
|
|
marshalProfilesResponse(pprofileotlp.ExportResponse) ([]byte, error)
|
|
|
|
marshalStatus(rsp *spb.Status) ([]byte, error)
|
|
|
|
contentType() string
|
|
}
|
|
|
|
type protoEncoder struct{}
|
|
|
|
func (protoEncoder) unmarshalTracesRequest(buf []byte) (ptraceotlp.ExportRequest, error) {
|
|
req := ptraceotlp.NewExportRequest()
|
|
err := req.UnmarshalProto(buf)
|
|
return req, err
|
|
}
|
|
|
|
func (protoEncoder) unmarshalMetricsRequest(buf []byte) (pmetricotlp.ExportRequest, error) {
|
|
req := pmetricotlp.NewExportRequest()
|
|
err := req.UnmarshalProto(buf)
|
|
return req, err
|
|
}
|
|
|
|
func (protoEncoder) unmarshalLogsRequest(buf []byte) (plogotlp.ExportRequest, error) {
|
|
req := plogotlp.NewExportRequest()
|
|
err := req.UnmarshalProto(buf)
|
|
return req, err
|
|
}
|
|
|
|
func (protoEncoder) unmarshalProfilesRequest(buf []byte) (pprofileotlp.ExportRequest, error) {
|
|
req := pprofileotlp.NewExportRequest()
|
|
err := req.UnmarshalProto(buf)
|
|
return req, err
|
|
}
|
|
|
|
func (protoEncoder) marshalTracesResponse(resp ptraceotlp.ExportResponse) ([]byte, error) {
|
|
return resp.MarshalProto()
|
|
}
|
|
|
|
func (protoEncoder) marshalMetricsResponse(resp pmetricotlp.ExportResponse) ([]byte, error) {
|
|
return resp.MarshalProto()
|
|
}
|
|
|
|
func (protoEncoder) marshalLogsResponse(resp plogotlp.ExportResponse) ([]byte, error) {
|
|
return resp.MarshalProto()
|
|
}
|
|
|
|
func (protoEncoder) marshalProfilesResponse(resp pprofileotlp.ExportResponse) ([]byte, error) {
|
|
return resp.MarshalProto()
|
|
}
|
|
|
|
func (protoEncoder) marshalStatus(resp *spb.Status) ([]byte, error) {
|
|
return proto.Marshal(resp)
|
|
}
|
|
|
|
func (protoEncoder) contentType() string {
|
|
return pbContentType
|
|
}
|
|
|
|
type jsonEncoder struct{}
|
|
|
|
func (jsonEncoder) unmarshalTracesRequest(buf []byte) (ptraceotlp.ExportRequest, error) {
|
|
req := ptraceotlp.NewExportRequest()
|
|
err := req.UnmarshalJSON(buf)
|
|
return req, err
|
|
}
|
|
|
|
func (jsonEncoder) unmarshalMetricsRequest(buf []byte) (pmetricotlp.ExportRequest, error) {
|
|
req := pmetricotlp.NewExportRequest()
|
|
err := req.UnmarshalJSON(buf)
|
|
return req, err
|
|
}
|
|
|
|
func (jsonEncoder) unmarshalLogsRequest(buf []byte) (plogotlp.ExportRequest, error) {
|
|
req := plogotlp.NewExportRequest()
|
|
err := req.UnmarshalJSON(buf)
|
|
return req, err
|
|
}
|
|
|
|
func (jsonEncoder) unmarshalProfilesRequest(buf []byte) (pprofileotlp.ExportRequest, error) {
|
|
req := pprofileotlp.NewExportRequest()
|
|
err := req.UnmarshalJSON(buf)
|
|
return req, err
|
|
}
|
|
|
|
func (jsonEncoder) marshalTracesResponse(resp ptraceotlp.ExportResponse) ([]byte, error) {
|
|
return resp.MarshalJSON()
|
|
}
|
|
|
|
func (jsonEncoder) marshalMetricsResponse(resp pmetricotlp.ExportResponse) ([]byte, error) {
|
|
return resp.MarshalJSON()
|
|
}
|
|
|
|
func (jsonEncoder) marshalLogsResponse(resp plogotlp.ExportResponse) ([]byte, error) {
|
|
return resp.MarshalJSON()
|
|
}
|
|
|
|
func (jsonEncoder) marshalProfilesResponse(resp pprofileotlp.ExportResponse) ([]byte, error) {
|
|
return resp.MarshalJSON()
|
|
}
|
|
|
|
func (jsonEncoder) marshalStatus(resp *spb.Status) ([]byte, error) {
|
|
return protojson.Marshal(resp)
|
|
}
|
|
|
|
func (jsonEncoder) contentType() string {
|
|
return jsonContentType
|
|
}
|