TrinityCore
Metric.h File Reference
#include "Define.h"
#include "Duration.h"
#include "MPSCQueue.h"
#include "Optional.h"
#include <functional>
#include <iosfwd>
#include <memory>
#include <string>
#include <unordered_map>
#include <utility>
#include <variant>
+ Include dependency graph for Metric.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  MetricData
 
class  Metric
 
class  MetricStopWatch< LoggerType >
 

Namespaces

namespace  Trinity
 
namespace  Trinity::Asio
 

Macros

#define sMetric   Metric::instance()
 
#define TC_METRIC_TAG(name, value)   MetricTag(name, value)
 
#define TC_METRIC_DO_CONCAT(a, b)   a ## b
 
#define TC_METRIC_CONCAT(a, b)   TC_METRIC_DO_CONCAT(a, b)
 
#define TC_METRIC_UNIQUE_NAME(name)   TC_METRIC_CONCAT(name, __LINE__)
 
#define TC_METRIC_EVENT(category, title, description)
 
#define TC_METRIC_VALUE(category, value, ...)
 
#define TC_METRIC_TIMER(category, ...)
 
#define TC_METRIC_DETAILED_EVENT(category, title, description)   ((void)0)
 
#define TC_METRIC_DETAILED_TIMER(category, ...)   ((void)0)
 
#define TC_METRIC_DETAILED_NO_THRESHOLD_TIMER(category, ...)   ((void)0)
 

Typedefs

using MetricTag = std::pair< std::string, std::string >
 

Enumerations

enum  MetricDataType { METRIC_DATA_VALUE , METRIC_DATA_EVENT }
 

Functions

template<typename LoggerType >
Optional< MetricStopWatch< LoggerType > > MakeMetricStopWatch (LoggerType &&loggerFunc)
 

Macro Definition Documentation

◆ sMetric

#define sMetric   Metric::instance()

Definition at line 149 of file Metric.h.

◆ TC_METRIC_CONCAT

#define TC_METRIC_CONCAT (   a,
 
)    TC_METRIC_DO_CONCAT(a, b)

Definition at line 183 of file Metric.h.

◆ TC_METRIC_DETAILED_EVENT

#define TC_METRIC_DETAILED_EVENT (   category,
  title,
  description 
)    ((void)0)

Definition at line 240 of file Metric.h.

◆ TC_METRIC_DETAILED_NO_THRESHOLD_TIMER

#define TC_METRIC_DETAILED_NO_THRESHOLD_TIMER (   category,
  ... 
)    ((void)0)

Definition at line 242 of file Metric.h.

◆ TC_METRIC_DETAILED_TIMER

#define TC_METRIC_DETAILED_TIMER (   category,
  ... 
)    ((void)0)

Definition at line 241 of file Metric.h.

◆ TC_METRIC_DO_CONCAT

#define TC_METRIC_DO_CONCAT (   a,
 
)    a ## b

Definition at line 182 of file Metric.h.

◆ TC_METRIC_EVENT

#define TC_METRIC_EVENT (   category,
  title,
  description 
)
Value:
__pragma(warning(push)) \
__pragma(warning(disable:4127)) \
do { \
if (sMetric->IsEnabled()) \
sMetric->LogEvent(category, title, description); \
} while (0) \
__pragma(warning(pop))
#define sMetric
Definition: Metric.h:149

Definition at line 206 of file Metric.h.

◆ TC_METRIC_TAG

#define TC_METRIC_TAG (   name,
  value 
)    MetricTag(name, value)

Definition at line 180 of file Metric.h.

◆ TC_METRIC_TIMER

#define TC_METRIC_TIMER (   category,
  ... 
)
Value:
auto TC_METRIC_UNIQUE_NAME(__tc_metric_stop_watch) = MakeMetricStopWatch([&](TimePoint start) \
{ \
sMetric->LogValue(category, std::chrono::steady_clock::now() - start, ##__VA_ARGS__); \
});
std::chrono::steady_clock::time_point TimePoint
time_point shorthand typedefs
Definition: Duration.h:41
Optional< MetricStopWatch< LoggerType > > MakeMetricStopWatch(LoggerType &&loggerFunc)
Definition: Metric.h:172
#define TC_METRIC_UNIQUE_NAME(name)
Definition: Metric.h:184

Definition at line 223 of file Metric.h.

◆ TC_METRIC_UNIQUE_NAME

#define TC_METRIC_UNIQUE_NAME (   name)    TC_METRIC_CONCAT(name, __LINE__)

Definition at line 184 of file Metric.h.

◆ TC_METRIC_VALUE

#define TC_METRIC_VALUE (   category,
  value,
  ... 
)
Value:
__pragma(warning(push)) \
__pragma(warning(disable:4127)) \
do { \
if (sMetric->IsEnabled()) \
sMetric->LogValue(category, value, ##__VA_ARGS__); \
} while (0) \
__pragma(warning(pop))

Definition at line 214 of file Metric.h.

Typedef Documentation

◆ MetricTag

using MetricTag = std::pair<std::string, std::string>

Definition at line 48 of file Metric.h.

Enumeration Type Documentation

◆ MetricDataType

Enumerator
METRIC_DATA_VALUE 
METRIC_DATA_EVENT 

Definition at line 42 of file Metric.h.

Function Documentation

◆ MakeMetricStopWatch()

template<typename LoggerType >
Optional< MetricStopWatch< LoggerType > > MakeMetricStopWatch ( LoggerType &&  loggerFunc)

Definition at line 172 of file Metric.h.