lib/protoparser/datadogv2: simplify code for parsing protobuf messages after 0597718435

Updates https://github.com/VictoriaMetrics/VictoriaMetrics/pull/5094
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4451
This commit is contained in:
Aliaksandr Valialkin 2024-01-14 21:42:59 +02:00
parent dd25049858
commit f405384c8c
No known key found for this signature in database
GPG key ID: 52C003EE2BCDB9EB

View file

@ -62,7 +62,7 @@ func UnmarshalProtobuf(req *Request, b []byte) error {
return req.unmarshalProtobuf(b) return req.unmarshalProtobuf(b)
} }
func (req *Request) unmarshalProtobuf(src []byte) error { func (req *Request) unmarshalProtobuf(src []byte) (err error) {
// message Request { // message Request {
// repeated Series series = 1; // repeated Series series = 1;
// } // }
@ -71,7 +71,7 @@ func (req *Request) unmarshalProtobuf(src []byte) error {
series := req.Series series := req.Series
var fc easyproto.FieldContext var fc easyproto.FieldContext
for len(src) > 0 { for len(src) > 0 {
tail, err := fc.NextField(src) src, err = fc.NextField(src)
if err != nil { if err != nil {
return fmt.Errorf("cannot unmarshal next field: %w", err) return fmt.Errorf("cannot unmarshal next field: %w", err)
} }
@ -91,7 +91,6 @@ func (req *Request) unmarshalProtobuf(src []byte) error {
return fmt.Errorf("cannot unmarshal series: %w", err) return fmt.Errorf("cannot unmarshal series: %w", err)
} }
} }
src = tail
} }
req.Series = series req.Series = series
return nil return nil
@ -149,7 +148,7 @@ func (s *Series) reset() {
s.Tags = tags[:0] s.Tags = tags[:0]
} }
func (s *Series) unmarshalProtobuf(src []byte) error { func (s *Series) unmarshalProtobuf(src []byte) (err error) {
// message MetricSeries { // message MetricSeries {
// string metric = 2; // string metric = 2;
// repeated Point points = 4; // repeated Point points = 4;
@ -164,7 +163,7 @@ func (s *Series) unmarshalProtobuf(src []byte) error {
tags := s.Tags tags := s.Tags
var fc easyproto.FieldContext var fc easyproto.FieldContext
for len(src) > 0 { for len(src) > 0 {
tail, err := fc.NextField(src) src, err = fc.NextField(src)
if err != nil { if err != nil {
return fmt.Errorf("cannot unmarshal next field: %w", err) return fmt.Errorf("cannot unmarshal next field: %w", err)
} }
@ -216,7 +215,6 @@ func (s *Series) unmarshalProtobuf(src []byte) error {
} }
tags = append(tags, tag) tags = append(tags, tag)
} }
src = tail
} }
s.Points = points s.Points = points
s.Resources = resources s.Resources = resources
@ -240,7 +238,7 @@ func (pt *Point) reset() {
pt.Value = 0 pt.Value = 0
} }
func (pt *Point) unmarshalProtobuf(src []byte) error { func (pt *Point) unmarshalProtobuf(src []byte) (err error) {
// message Point { // message Point {
// double value = 1; // double value = 1;
// int64 timestamp = 2; // int64 timestamp = 2;
@ -249,7 +247,7 @@ func (pt *Point) unmarshalProtobuf(src []byte) error {
// See https://github.com/DataDog/agent-payload/blob/d7c5dcc63970d0e19678a342e7718448dd777062/proto/metrics/agent_payload.proto // See https://github.com/DataDog/agent-payload/blob/d7c5dcc63970d0e19678a342e7718448dd777062/proto/metrics/agent_payload.proto
var fc easyproto.FieldContext var fc easyproto.FieldContext
for len(src) > 0 { for len(src) > 0 {
tail, err := fc.NextField(src) src, err = fc.NextField(src)
if err != nil { if err != nil {
return fmt.Errorf("cannot unmarshal next field: %w", err) return fmt.Errorf("cannot unmarshal next field: %w", err)
} }
@ -267,7 +265,6 @@ func (pt *Point) unmarshalProtobuf(src []byte) error {
} }
pt.Timestamp = timestamp pt.Timestamp = timestamp
} }
src = tail
} }
return nil return nil
} }
@ -285,7 +282,7 @@ func (r *Resource) reset() {
r.Type = "" r.Type = ""
} }
func (r *Resource) unmarshalProtobuf(src []byte) error { func (r *Resource) unmarshalProtobuf(src []byte) (err error) {
// message Resource { // message Resource {
// string type = 1; // string type = 1;
// string name = 2; // string name = 2;
@ -294,7 +291,7 @@ func (r *Resource) unmarshalProtobuf(src []byte) error {
// See https://github.com/DataDog/agent-payload/blob/d7c5dcc63970d0e19678a342e7718448dd777062/proto/metrics/agent_payload.proto // See https://github.com/DataDog/agent-payload/blob/d7c5dcc63970d0e19678a342e7718448dd777062/proto/metrics/agent_payload.proto
var fc easyproto.FieldContext var fc easyproto.FieldContext
for len(src) > 0 { for len(src) > 0 {
tail, err := fc.NextField(src) src, err = fc.NextField(src)
if err != nil { if err != nil {
return fmt.Errorf("cannot unmarshal next field: %w", err) return fmt.Errorf("cannot unmarshal next field: %w", err)
} }
@ -312,7 +309,6 @@ func (r *Resource) unmarshalProtobuf(src []byte) error {
} }
r.Name = name r.Name = name
} }
src = tail
} }
return nil return nil
} }