| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- // Copyright The OpenTelemetry Authors
- // SPDX-License-Identifier: Apache-2.0
- package telemetry
- import (
- "encoding/json"
- "strconv"
- )
- // protoInt64 represents the protobuf encoding of integers which can be either
- // strings or integers.
- type protoInt64 int64
- // Int64 returns the protoInt64 as an int64.
- func (i *protoInt64) Int64() int64 { return int64(*i) }
- // UnmarshalJSON decodes both strings and integers.
- func (i *protoInt64) UnmarshalJSON(data []byte) error {
- if data[0] == '"' {
- var str string
- if err := json.Unmarshal(data, &str); err != nil {
- return err
- }
- parsedInt, err := strconv.ParseInt(str, 10, 64)
- if err != nil {
- return err
- }
- *i = protoInt64(parsedInt)
- } else {
- var parsedInt int64
- if err := json.Unmarshal(data, &parsedInt); err != nil {
- return err
- }
- *i = protoInt64(parsedInt)
- }
- return nil
- }
- // protoUint64 represents the protobuf encoding of integers which can be either
- // strings or integers.
- type protoUint64 uint64
- // Uint64 returns the protoUint64 as a uint64.
- func (i *protoUint64) Uint64() uint64 { return uint64(*i) }
- // UnmarshalJSON decodes both strings and integers.
- func (i *protoUint64) UnmarshalJSON(data []byte) error {
- if data[0] == '"' {
- var str string
- if err := json.Unmarshal(data, &str); err != nil {
- return err
- }
- parsedUint, err := strconv.ParseUint(str, 10, 64)
- if err != nil {
- return err
- }
- *i = protoUint64(parsedUint)
- } else {
- var parsedUint uint64
- if err := json.Unmarshal(data, &parsedUint); err != nil {
- return err
- }
- *i = protoUint64(parsedUint)
- }
- return nil
- }
|