Coverage Report

Created: 2024-09-19 09:45

/proc/self/cwd/source/extensions/tracers/zipkin/util.h
Line
Count
Source (jump to first uncovered line)
1
#pragma once
2
3
#include <string>
4
#include <vector>
5
6
#include "envoy/common/time.h"
7
8
#include "source/common/common/byte_order.h"
9
#include "source/common/protobuf/utility.h"
10
11
namespace Envoy {
12
namespace Extensions {
13
namespace Tracers {
14
namespace Zipkin {
15
16
/**
17
 * Utility class with a few convenient methods
18
 */
19
class Util {
20
public:
21
  /**
22
   * Returns a randomly-generated 64-bit integer number.
23
   */
24
  static uint64_t generateRandom64(TimeSource& time_source);
25
26
  /**
27
   * Returns byte string representation of a number.
28
   *
29
   * @param value Number that will be represented in byte string.
30
   * @return std::string byte string representation of a number.
31
   */
32
0
  template <typename Type> static std::string toByteString(Type value) {
33
0
    return {reinterpret_cast<const char*>(&value), sizeof(Type)};
34
0
  }
Unexecuted instantiation: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > Envoy::Extensions::Tracers::Zipkin::Util::toByteString<unsigned long>(unsigned long)
Unexecuted instantiation: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > Envoy::Extensions::Tracers::Zipkin::Util::toByteString<unsigned int>(unsigned int)
Unexecuted instantiation: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > Envoy::Extensions::Tracers::Zipkin::Util::toByteString<absl::lts_20230802::uint128>(absl::lts_20230802::uint128)
35
36
  /**
37
   * Returns big endian byte string representation of a number.
38
   *
39
   * @param value Number that will be represented in byte string.
40
   * @param flip indicates to flip order or not.
41
   * @return std::string byte string representation of a number.
42
   */
43
0
  template <typename Type> static std::string toBigEndianByteString(Type value) {
44
0
    auto bytes = toEndianness<ByteOrder::BigEndian>(value);
45
0
    return {reinterpret_cast<const char*>(&bytes), sizeof(Type)};
46
0
  }
47
48
  using Replacements = std::vector<std::pair<const std::string, const std::string>>;
49
50
  /**
51
   * Returns a wrapped uint64_t value as a string. In addition to that, it also pushes back a
52
   * replacement to the given replacements vector. The replacement includes the supplied name
53
   * as a key, for identification in a JSON stream.
54
   *
55
   * @param value unt64_t number that will be represented in string.
56
   * @param name std::string that is the key for the value being replaced.
57
   * @param replacements a container to hold the required replacements when serializing this value.
58
   * @return ProtobufWkt::Value wrapped uint64_t as a string.
59
   */
60
  static ProtobufWkt::Value uint64Value(uint64_t value, absl::string_view name,
61
                                        Replacements& replacements);
62
};
63
64
} // namespace Zipkin
65
} // namespace Tracers
66
} // namespace Extensions
67
} // namespace Envoy