| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- // Copyright The OpenTelemetry Authors
- // SPDX-License-Identifier: Apache-2.0
- package telemetry
- import (
- "bytes"
- "encoding/json"
- "errors"
- "fmt"
- "io"
- )
- // Scope is the identifying values of the instrumentation scope.
- type Scope struct {
- Name string `json:"name,omitempty"`
- Version string `json:"version,omitempty"`
- Attrs []Attr `json:"attributes,omitempty"`
- DroppedAttrs uint32 `json:"droppedAttributesCount,omitempty"`
- }
- // UnmarshalJSON decodes the OTLP formatted JSON contained in data into r.
- func (s *Scope) UnmarshalJSON(data []byte) error {
- decoder := json.NewDecoder(bytes.NewReader(data))
- t, err := decoder.Token()
- if err != nil {
- return err
- }
- if t != json.Delim('{') {
- return errors.New("invalid Scope type")
- }
- for decoder.More() {
- keyIface, err := decoder.Token()
- if err != nil {
- if errors.Is(err, io.EOF) {
- // Empty.
- return nil
- }
- return err
- }
- key, ok := keyIface.(string)
- if !ok {
- return fmt.Errorf("invalid Scope field: %#v", keyIface)
- }
- switch key {
- case "name":
- err = decoder.Decode(&s.Name)
- case "version":
- err = decoder.Decode(&s.Version)
- case "attributes":
- err = decoder.Decode(&s.Attrs)
- case "droppedAttributesCount", "dropped_attributes_count":
- err = decoder.Decode(&s.DroppedAttrs)
- default:
- // Skip unknown.
- }
- if err != nil {
- return err
- }
- }
- return nil
- }
|