10 #include "absl/strings/str_cat.h" 11 #include "base/atomic_wrapper.h" 12 #include "base/integral_types.h" 13 #include "strings/stringpiece.h" 14 #include "strings/unique_strings.h" 15 #include "util/stats/sliding_counter.h" 16 #include "util/stats/varz_node.h" 18 #define DEFINE_VARZ(type, name) util::type name(#name) 26 typedef StringPieceDenseMap<base::atomic_wrapper<long>> Map;
30 map_counts_.set_empty_key(StringPiece());
34 void IncBy(StringPiece key, int32 delta);
36 void Inc(StringPiece key) {
39 void Set(StringPiece key, int32 value);
42 virtual AnyValue GetData()
const override;
43 Map::iterator ReadLockAndFindOrInsert(StringPiece key);
45 mutable folly::RWSpinLock rw_spinlock_;
46 StringPieceDenseMap<base::atomic_wrapper<long>> map_counts_;
53 avg_.set_empty_key(StringPiece());
56 void IncBy(StringPiece key, int32 delta);
59 virtual AnyValue GetData()
const override;
61 mutable std::mutex mutex_;
64 StringPieceDenseMap<std::pair<Counter, Counter>> avg_;
72 void IncBy(int32 delta) {
80 virtual AnyValue GetData()
const override;
82 std::atomic_long val_;
95 virtual AnyValue GetData()
const override;
102 typedef AnyValue::Map KeyValMap;
103 typedef std::function<KeyValMap()> MapCb;
126 : map_count_(*map_count) {
127 suffix_ = StrAppend(buf_, N, base);
130 void Inc(
const char* suffix) {
134 void IncBy(
const char* suffix, int32 val) {
135 strcpy(suffix_, suffix);
136 map_count_.IncBy(buf_, val);