1
#pragma once
2

            
3
#include <string>
4

            
5
#include "absl/types/optional.h"
6

            
7
namespace Envoy {
8
namespace Stats {
9

            
10
class StatName;
11

            
12
/**
13
 * General representation of a tag.
14
 */
15
struct Tag {
16
  std::string name_;
17
  std::string value_;
18

            
19
86
  bool operator==(const Tag& other) const {
20
86
    return other.name_ == name_ && other.value_ == value_;
21
86
  };
22
};
23

            
24
using TagVector = std::vector<Tag>;
25

            
26
using StatNameTag = std::pair<StatName, StatName>;
27
using StatNameTagVector = std::vector<StatNameTag>;
28
using StatNameTagVectorOptConstRef =
29
    absl::optional<std::reference_wrapper<const StatNameTagVector>>;
30

            
31
} // namespace Stats
32
} // namespace Envoy