Quick Links:

bal | bbl | bdl | bsl

Classes | Namespaces | Defines

balm_metrics.h File Reference

Provide a suite of operations for recording metric values. More...

Go to the source code of this file.

Classes

struct  balm::Metrics_Helper

Namespaces

namespace  balm

Defines

#define BALM_METRICS_IF_CATEGORY_ENABLED(CATEGORY)
#define BALM_METRICS_UPDATE(CATEGORY, METRIC1, VALUE1)
#define BALM_METRICS_UPDATE2(CATEGORY, METRIC1, VALUE1, METRIC2, VALUE2)
#define BALM_METRICS_UPDATE3(CATEGORY,METRIC1,VALUE1,METRIC2,VALUE2,METRIC3,VALUE3)
#define BALM_METRICS_UPDATE4(CATEGORY,METRIC1,VALUE1,METRIC2,VALUE2,METRIC3,VALUE3,METRIC4,VALUE4)
#define BALM_METRICS_UPDATE5(CATEGORY,METRIC1,VALUE1,METRIC2,VALUE2,METRIC3,VALUE3,METRIC4,VALUE4,METRIC5,VALUE5)
#define BALM_METRICS_UPDATE6(CATEGORY,METRIC1,VALUE1,METRIC2,VALUE2,METRIC3,VALUE3,METRIC4,VALUE4,METRIC5,VALUE5,METRIC6,VALUE6)
#define BALM_METRICS_TYPED_UPDATE(CATEGORY, METRIC, VALUE, PREFERRED_TYPE)
#define BALM_METRICS_DYNAMIC_UPDATE(CATEGORY, METRIC, VALUE)
#define BALM_METRICS_INT_UPDATE(CATEGORY, METRIC1, VALUE1)
#define BALM_METRICS_INT_UPDATE2(CATEGORY,METRIC1,VALUE1,METRIC2,VALUE2)
#define BALM_METRICS_INT_UPDATE3(CATEGORY,METRIC1,VALUE1,METRIC2,VALUE2,METRIC3,VALUE3)
#define BALM_METRICS_INT_UPDATE4(CATEGORY,METRIC1,VALUE1,METRIC2,VALUE2,METRIC3,VALUE3,METRIC4,VALUE4)
#define BALM_METRICS_INT_UPDATE5(CATEGORY,METRIC1,VALUE1,METRIC2,VALUE2,METRIC3,VALUE3,METRIC4,VALUE4,METRIC5,VALUE5)
#define BALM_METRICS_INT_UPDATE6(CATEGORY,METRIC1,VALUE1,METRIC2,VALUE2,METRIC3,VALUE3,METRIC4,VALUE4,METRIC5,VALUE5,METRIC6,VALUE6)
#define BALM_METRICS_TYPED_INT_UPDATE(CATEGORY,METRIC,VALUE,PREFERRED_TYPE)
#define BALM_METRICS_DYNAMIC_INT_UPDATE(CATEGORY, METRIC, VALUE)
#define BALM_METRICS_INCREMENT(CATEGORY, METRIC)   BALM_METRICS_INT_UPDATE(CATEGORY, METRIC, 1)
#define BALM_METRICS_TYPED_INCREMENT(CATEGORY, METRIC, PREFERRED_TYPE)   BALM_METRICS_TYPED_INT_UPDATE(CATEGORY, METRIC, 1, PREFERRED_TYPE)
#define BALM_METRICS_DYNAMIC_INCREMENT(CATEGORY, METRIC)   BALM_METRICS_DYNAMIC_INT_UPDATE(CATEGORY, METRIC, 1)
#define BALM_METRICS_TIME_BLOCK(CATEGORY, METRIC, TIME_UNITS)
#define BALM_METRICS_DYNAMIC_TIME_BLOCK(CATEGORY, METRIC, TIME_UNITS)
#define BALM_METRICS_TIME_BLOCK_SECONDS(CATEGORY, METRIC)
#define BALM_METRICS_TIME_BLOCK_MILLISECONDS(CATEGORY, METRIC)
#define BALM_METRICS_TIME_BLOCK_MICROSECONDS(CATEGORY, METRIC)
#define BALM_METRICS_TIME_BLOCK_NANOSECONDS(CATEGORY, METRIC)
#define BALM_METRICS_DYNAMIC_TIME_BLOCK_SECONDS(CATEGORY, METRIC)
#define BALM_METRICS_DYNAMIC_TIME_BLOCK_MILLISECONDS(CATEGORY, METRIC)
#define BALM_METRICS_DYNAMIC_TIME_BLOCK_MICROSECONDS(CATEGORY, METRIC)
#define BALM_METRICS_DYNAMIC_TIME_BLOCK_NANOSECONDS(CATEGORY, METRIC)
#define BALM_METRICS_IF_CATEGORY_ENABLED_IMP(CATEGORY, HOLDER_NAME)
#define BALM_METRICS_TIME_BLOCK_IMP(CATEGORY,METRIC,TIME_UNITS,VARIABLE_NAME)
#define BALM_METRICS_DYNAMIC_TIME_BLOCK_IMP(CATEGORY,METRIC,TIME_UNITS,VARIABLE_NAME)
#define BALM_METRICS_UNIQNUM   __LINE__
#define BALM_METRICS_CAT(X, Y)   BALM_METRICS_CAT_IMP(X, Y)
#define BALM_METRICS_CAT_IMP(X, Y)   X##Y
#define BALM_METRICS_UNIQUE_NAME(X)   BALM_METRICS_CAT(X, BALM_METRICS_UNIQNUM)

Detailed Description


Define Documentation

#define BALM_METRICS_IF_CATEGORY_ENABLED (   CATEGORY  ) 
#define BALM_METRICS_UPDATE (   CATEGORY,
  METRIC1,
  VALUE1 
)
Value:
do {                   \
   using namespace BloombergLP;                                               \
   typedef balm::Metrics_Helper Helper;                                       \
   static balm::CategoryHolder holder = { false, 0, 0 };                      \
   static balm::Collector *collector1 = 0;                                    \
   if (0 == holder.category() && balm::DefaultMetricsManager::instance()) {   \
     Helper::logEmptyName(CATEGORY,Helper::e_TYPE_CATEGORY,__FILE__,__LINE__);\
     Helper::logEmptyName(METRIC1, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
       collector1 = Helper::getCollector(CATEGORY, METRIC1);                  \
       Helper::initializeCategoryHolder(&holder, CATEGORY);                   \
   }                                                                          \
   if (holder.enabled()) {                                                    \
       collector1->update(VALUE1);                                            \
   }                                                                          \
 } while (0)
#define BALM_METRICS_UPDATE2 (   CATEGORY,
  METRIC1,
  VALUE1,
  METRIC2,
  VALUE2 
)
Value:
do { \
   using namespace BloombergLP;                                               \
   typedef balm::Metrics_Helper Helper;                                       \
   static balm::CategoryHolder holder = { false, 0, 0 };                      \
   static balm::Collector *collector1 = 0;                                    \
   static balm::Collector *collector2 = 0;                                    \
   if (0 == holder.category() && balm::DefaultMetricsManager::instance()) {   \
     Helper::logEmptyName(CATEGORY,Helper::e_TYPE_CATEGORY,__FILE__,__LINE__);\
     Helper::logEmptyName(METRIC1, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
     Helper::logEmptyName(METRIC2, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
       collector1 = Helper::getCollector(CATEGORY, METRIC1);                  \
       collector2 = Helper::getCollector(CATEGORY, METRIC2);                  \
       Helper::initializeCategoryHolder(&holder, CATEGORY);                   \
   }                                                                          \
   if (holder.enabled()) {                                                    \
       collector1->update(VALUE1);                                            \
       collector2->update(VALUE2);                                            \
   }                                                                          \
 } while (0)
#define BALM_METRICS_UPDATE3 (   CATEGORY,
  METRIC1,
  VALUE1,
  METRIC2,
  VALUE2,
  METRIC3,
  VALUE3 
)
Value:
do {                                     \
   using namespace BloombergLP;                                               \
   typedef balm::Metrics_Helper Helper;                                       \
   static balm::CategoryHolder holder = { false, 0, 0 };                      \
   static balm::Collector *collector1 = 0;                                    \
   static balm::Collector *collector2 = 0;                                    \
   static balm::Collector *collector3 = 0;                                    \
   if (0 == holder.category() && balm::DefaultMetricsManager::instance()) {   \
     Helper::logEmptyName(CATEGORY,Helper::e_TYPE_CATEGORY,__FILE__,__LINE__);\
     Helper::logEmptyName(METRIC1, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
     Helper::logEmptyName(METRIC2, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
     Helper::logEmptyName(METRIC3, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
       collector1 = Helper::getCollector(CATEGORY, METRIC1);                  \
       collector2 = Helper::getCollector(CATEGORY, METRIC2);                  \
       collector3 = Helper::getCollector(CATEGORY, METRIC3);                  \
       Helper::initializeCategoryHolder(&holder, CATEGORY);                   \
   }                                                                          \
   if (holder.enabled()) {                                                    \
       collector1->update(VALUE1);                                            \
       collector2->update(VALUE2);                                            \
       collector3->update(VALUE3);                                            \
   }                                                                          \
 } while (0)
#define BALM_METRICS_UPDATE4 (   CATEGORY,
  METRIC1,
  VALUE1,
  METRIC2,
  VALUE2,
  METRIC3,
  VALUE3,
  METRIC4,
  VALUE4 
)
Value:
do {                                     \
   using namespace BloombergLP;                                               \
   typedef balm::Metrics_Helper Helper;                                       \
   static balm::CategoryHolder holder = { false, 0, 0 };                      \
   static balm::Collector *collector1 = 0;                                    \
   static balm::Collector *collector2 = 0;                                    \
   static balm::Collector *collector3 = 0;                                    \
   static balm::Collector *collector4 = 0;                                    \
   if (0 == holder.category() && balm::DefaultMetricsManager::instance()) {   \
     Helper::logEmptyName(CATEGORY,Helper::e_TYPE_CATEGORY,__FILE__,__LINE__);\
     Helper::logEmptyName(METRIC1, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
     Helper::logEmptyName(METRIC2, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
     Helper::logEmptyName(METRIC3, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
     Helper::logEmptyName(METRIC4, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
       collector1 = Helper::getCollector(CATEGORY, METRIC1);                  \
       collector2 = Helper::getCollector(CATEGORY, METRIC2);                  \
       collector3 = Helper::getCollector(CATEGORY, METRIC3);                  \
       collector4 = Helper::getCollector(CATEGORY, METRIC4);                  \
       Helper::initializeCategoryHolder(&holder, CATEGORY);                   \
   }                                                                          \
   if (holder.enabled()) {                                                    \
       collector1->update(VALUE1);                                            \
       collector2->update(VALUE2);                                            \
       collector3->update(VALUE3);                                            \
       collector4->update(VALUE4);                                            \
   }                                                                          \
 } while (0)
#define BALM_METRICS_UPDATE5 (   CATEGORY,
  METRIC1,
  VALUE1,
  METRIC2,
  VALUE2,
  METRIC3,
  VALUE3,
  METRIC4,
  VALUE4,
  METRIC5,
  VALUE5 
)
#define BALM_METRICS_UPDATE6 (   CATEGORY,
  METRIC1,
  VALUE1,
  METRIC2,
  VALUE2,
  METRIC3,
  VALUE3,
  METRIC4,
  VALUE4,
  METRIC5,
  VALUE5,
  METRIC6,
  VALUE6 
)
#define BALM_METRICS_TYPED_UPDATE (   CATEGORY,
  METRIC,
  VALUE,
  PREFERRED_TYPE 
)
Value:
do {                                                                         \
   using namespace BloombergLP;                                               \
   typedef balm::Metrics_Helper Helper;                                       \
   static balm::CategoryHolder holder = { false, 0, 0 };                      \
   static balm::Collector *collector1 = 0;                                    \
   if (0 == holder.category() && balm::DefaultMetricsManager::instance()) {   \
     Helper::logEmptyName(CATEGORY,Helper::e_TYPE_CATEGORY,__FILE__,__LINE__);\
     Helper::logEmptyName(METRIC, Helper::e_TYPE_METRIC, __FILE__, __LINE__); \
       collector1 = Helper::getCollector(CATEGORY, METRIC);                   \
       Helper::setPublicationType(collector1->metricId(), PREFERRED_TYPE);    \
       Helper::initializeCategoryHolder(&holder, CATEGORY);                   \
   }                                                                          \
   if (holder.enabled()) {                                                    \
       collector1->update(VALUE);                                             \
   }                                                                          \
 } while (0)
#define BALM_METRICS_DYNAMIC_UPDATE (   CATEGORY,
  METRIC,
  VALUE 
)
Value:
do {             \
    using namespace BloombergLP;                                              \
    if (balm::DefaultMetricsManager::instance()) {                            \
        balm::CollectorRepository& repository =                               \
             balm::DefaultMetricsManager::instance()->collectorRepository();  \
        balm::Collector *collector = repository.getDefaultCollector(          \
                                                        (CATEGORY), (METRIC));\
        if (collector->metricId().category()->enabled()) {                    \
            collector->update((VALUE));                                       \
        }                                                                     \
    }                                                                         \
  } while(0)
#define BALM_METRICS_INT_UPDATE (   CATEGORY,
  METRIC1,
  VALUE1 
)
Value:
do {               \
   using namespace BloombergLP;                                               \
   typedef balm::Metrics_Helper Helper;                                       \
   static balm::CategoryHolder holder = { false, 0, 0 };                      \
   static balm::IntegerCollector *collector1 = 0;                             \
   if (0 == holder.category() && balm::DefaultMetricsManager::instance()) {   \
     Helper::logEmptyName(CATEGORY,Helper::e_TYPE_CATEGORY,__FILE__,__LINE__);\
     Helper::logEmptyName(METRIC1, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
       collector1 = Helper::getIntegerCollector(CATEGORY, METRIC1);           \
       Helper::initializeCategoryHolder(&holder, CATEGORY);                   \
   }                                                                          \
   if (holder.enabled()) {                                                    \
       collector1->update(VALUE1);                                            \
   }                                                                          \
 } while (0)
#define BALM_METRICS_INT_UPDATE2 (   CATEGORY,
  METRIC1,
  VALUE1,
  METRIC2,
  VALUE2 
)
Value:
do {                                 \
   using namespace BloombergLP;                                               \
   typedef balm::Metrics_Helper Helper;                                       \
   static balm::CategoryHolder holder = { false, 0, 0 };                      \
   static balm::IntegerCollector *collector1 = 0;                             \
   static balm::IntegerCollector *collector2 = 0;                             \
   if (0 == holder.category() && balm::DefaultMetricsManager::instance()) {   \
     Helper::logEmptyName(CATEGORY,Helper::e_TYPE_CATEGORY,__FILE__,__LINE__);\
     Helper::logEmptyName(METRIC1, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
     Helper::logEmptyName(METRIC2, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
       collector1 = Helper::getIntegerCollector(CATEGORY, METRIC1);           \
       collector2 = Helper::getIntegerCollector(CATEGORY, METRIC2);           \
       Helper::initializeCategoryHolder(&holder, CATEGORY);                   \
   }                                                                          \
   if (holder.enabled()) {                                                    \
       collector1->update(VALUE1);                                            \
       collector2->update(VALUE2);                                            \
   }                                                                          \
 } while (0)
#define BALM_METRICS_INT_UPDATE3 (   CATEGORY,
  METRIC1,
  VALUE1,
  METRIC2,
  VALUE2,
  METRIC3,
  VALUE3 
)
Value:
do {                                 \
   using namespace BloombergLP;                                               \
   typedef balm::Metrics_Helper Helper;                                       \
   static balm::CategoryHolder holder = { false, 0, 0 };                      \
   static balm::IntegerCollector *collector1 = 0;                             \
   static balm::IntegerCollector *collector2 = 0;                             \
   static balm::IntegerCollector *collector3 = 0;                             \
   if (0 == holder.category() && balm::DefaultMetricsManager::instance()) {   \
     Helper::logEmptyName(CATEGORY,Helper::e_TYPE_CATEGORY,__FILE__,__LINE__);\
     Helper::logEmptyName(METRIC1, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
     Helper::logEmptyName(METRIC2, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
     Helper::logEmptyName(METRIC3, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
       collector1 = Helper::getIntegerCollector(CATEGORY, METRIC1);           \
       collector2 = Helper::getIntegerCollector(CATEGORY, METRIC2);           \
       collector3 = Helper::getIntegerCollector(CATEGORY, METRIC3);           \
       Helper::initializeCategoryHolder(&holder, CATEGORY);                   \
   }                                                                          \
   if (holder.enabled()) {                                                    \
       collector1->update(VALUE1);                                            \
       collector2->update(VALUE2);                                            \
       collector3->update(VALUE3);                                            \
   }                                                                          \
 } while (0)
#define BALM_METRICS_INT_UPDATE4 (   CATEGORY,
  METRIC1,
  VALUE1,
  METRIC2,
  VALUE2,
  METRIC3,
  VALUE3,
  METRIC4,
  VALUE4 
)
Value:
do {                                 \
   using namespace BloombergLP;                                               \
   typedef balm::Metrics_Helper Helper;                                       \
   static balm::CategoryHolder holder = { false, 0, 0 };                      \
   static balm::IntegerCollector *collector1 = 0;                             \
   static balm::IntegerCollector *collector2 = 0;                             \
   static balm::IntegerCollector *collector3 = 0;                             \
   static balm::IntegerCollector *collector4 = 0;                             \
   if (0 == holder.category() && balm::DefaultMetricsManager::instance()) {   \
     Helper::logEmptyName(CATEGORY,Helper::e_TYPE_CATEGORY,__FILE__,__LINE__);\
     Helper::logEmptyName(METRIC1, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
     Helper::logEmptyName(METRIC2, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
     Helper::logEmptyName(METRIC3, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
     Helper::logEmptyName(METRIC4, Helper::e_TYPE_METRIC, __FILE__, __LINE__);\
       collector1 = Helper::getIntegerCollector(CATEGORY, METRIC1);           \
       collector2 = Helper::getIntegerCollector(CATEGORY, METRIC2);           \
       collector3 = Helper::getIntegerCollector(CATEGORY, METRIC3);           \
       collector4 = Helper::getIntegerCollector(CATEGORY, METRIC4);           \
       Helper::initializeCategoryHolder(&holder, CATEGORY);                   \
   }                                                                          \
   if (holder.enabled()) {                                                    \
       collector1->update(VALUE1);                                            \
       collector2->update(VALUE2);                                            \
       collector3->update(VALUE3);                                            \
       collector4->update(VALUE4);                                            \
   }                                                                          \
 } while (0)
#define BALM_METRICS_INT_UPDATE5 (   CATEGORY,
  METRIC1,
  VALUE1,
  METRIC2,
  VALUE2,
  METRIC3,
  VALUE3,
  METRIC4,
  VALUE4,
  METRIC5,
  VALUE5 
)
#define BALM_METRICS_INT_UPDATE6 (   CATEGORY,
  METRIC1,
  VALUE1,
  METRIC2,
  VALUE2,
  METRIC3,
  VALUE3,
  METRIC4,
  VALUE4,
  METRIC5,
  VALUE5,
  METRIC6,
  VALUE6 
)
#define BALM_METRICS_TYPED_INT_UPDATE (   CATEGORY,
  METRIC,
  VALUE,
  PREFERRED_TYPE 
)
Value:
do {                                                                          \
   using namespace BloombergLP;                                               \
   typedef balm::Metrics_Helper Helper;                                       \
   static balm::CategoryHolder holder = { false, 0, 0 };                      \
   static balm::IntegerCollector *collector1 = 0;                             \
   if (0 == holder.category() && balm::DefaultMetricsManager::instance()) {   \
     Helper::logEmptyName(CATEGORY,Helper::e_TYPE_CATEGORY,__FILE__,__LINE__);\
     Helper::logEmptyName(METRIC, Helper::e_TYPE_METRIC, __FILE__, __LINE__); \
       collector1 = Helper::getIntegerCollector(CATEGORY, METRIC);            \
       Helper::setPublicationType(collector1->metricId(), PREFERRED_TYPE);    \
       Helper::initializeCategoryHolder(&holder, CATEGORY);                   \
   }                                                                          \
   if (holder.enabled()) {                                                    \
       collector1->update(VALUE);                                             \
   }                                                                          \
 } while (0)
#define BALM_METRICS_DYNAMIC_INT_UPDATE (   CATEGORY,
  METRIC,
  VALUE 
)
Value:
do {         \
    using namespace BloombergLP;                                              \
    if (balm::DefaultMetricsManager::instance()) {                            \
        balm::CollectorRepository& repository =                               \
             balm::DefaultMetricsManager::instance()->collectorRepository();  \
        balm::IntegerCollector *collector =                                   \
               repository.getDefaultIntegerCollector((CATEGORY), (METRIC));   \
        if (collector->metricId().category()->enabled()) {                    \
            collector->update((VALUE));                                       \
        }                                                                     \
    }                                                                         \
  } while (0)
#define BALM_METRICS_INCREMENT (   CATEGORY,
  METRIC 
)    BALM_METRICS_INT_UPDATE(CATEGORY, METRIC, 1)
#define BALM_METRICS_TYPED_INCREMENT (   CATEGORY,
  METRIC,
  PREFERRED_TYPE 
)    BALM_METRICS_TYPED_INT_UPDATE(CATEGORY, METRIC, 1, PREFERRED_TYPE)
#define BALM_METRICS_DYNAMIC_INCREMENT (   CATEGORY,
  METRIC 
)    BALM_METRICS_DYNAMIC_INT_UPDATE(CATEGORY, METRIC, 1)
#define BALM_METRICS_TIME_BLOCK (   CATEGORY,
  METRIC,
  TIME_UNITS 
)
Value:
BALM_METRICS_TIME_BLOCK_IMP((CATEGORY),                                     \
                               (METRIC),                                      \
                               TIME_UNITS,                                    \
                               BALM_METRICS_UNIQUE_NAME(_bAlM_CoLlEcToR))
#define BALM_METRICS_DYNAMIC_TIME_BLOCK (   CATEGORY,
  METRIC,
  TIME_UNITS 
)
Value:
BALM_METRICS_DYNAMIC_TIME_BLOCK_IMP(                                        \
                                  (CATEGORY),                                 \
                                  (METRIC),                                   \
                                  TIME_UNITS,                                 \
                                  BALM_METRICS_UNIQUE_NAME(_bAlM_CoLlEcToR))
#define BALM_METRICS_TIME_BLOCK_SECONDS (   CATEGORY,
  METRIC 
)
Value:
BALM_METRICS_TIME_BLOCK((CATEGORY),                                         \
                          (METRIC),                                           \
                          BloombergLP::balm::StopwatchScopedGuard::k_SECONDS);
#define BALM_METRICS_TIME_BLOCK_MILLISECONDS (   CATEGORY,
  METRIC 
)
Value:
BALM_METRICS_TIME_BLOCK(                                                    \
                      (CATEGORY),                                             \
                      (METRIC),                                               \
                      BloombergLP::balm::StopwatchScopedGuard::k_MILLISECONDS);
#define BALM_METRICS_TIME_BLOCK_MICROSECONDS (   CATEGORY,
  METRIC 
)
Value:
BALM_METRICS_TIME_BLOCK(                                                    \
                      (CATEGORY),                                             \
                      (METRIC),                                               \
                      BloombergLP::balm::StopwatchScopedGuard::k_MICROSECONDS);
#define BALM_METRICS_TIME_BLOCK_NANOSECONDS (   CATEGORY,
  METRIC 
)
Value:
BALM_METRICS_TIME_BLOCK(                                                    \
                       (CATEGORY),                                            \
                       (METRIC),                                              \
                       BloombergLP::balm::StopwatchScopedGuard::k_NANOSECONDS);
#define BALM_METRICS_DYNAMIC_TIME_BLOCK_SECONDS (   CATEGORY,
  METRIC 
)
Value:
BALM_METRICS_DYNAMIC_TIME_BLOCK(                                            \
                           (CATEGORY),                                        \
                           (METRIC),                                          \
                           BloombergLP::balm::StopwatchScopedGuard::k_SECONDS);
#define BALM_METRICS_DYNAMIC_TIME_BLOCK_MILLISECONDS (   CATEGORY,
  METRIC 
)
Value:
BALM_METRICS_DYNAMIC_TIME_BLOCK(                                            \
                      (CATEGORY),                                             \
                      (METRIC),                                               \
                      BloombergLP::balm::StopwatchScopedGuard::k_MILLISECONDS);
#define BALM_METRICS_DYNAMIC_TIME_BLOCK_MICROSECONDS (   CATEGORY,
  METRIC 
)
Value:
BALM_METRICS_DYNAMIC_TIME_BLOCK(                                            \
                      (CATEGORY),                                             \
                      (METRIC),                                               \
                      BloombergLP::balm::StopwatchScopedGuard::k_MICROSECONDS);
#define BALM_METRICS_DYNAMIC_TIME_BLOCK_NANOSECONDS (   CATEGORY,
  METRIC 
)
Value:
BALM_METRICS_DYNAMIC_TIME_BLOCK(                                            \
                       (CATEGORY),                                            \
                       (METRIC),                                              \
                       BloombergLP::balm::StopwatchScopedGuard::k_NANOSECONDS);
#define BALM_METRICS_IF_CATEGORY_ENABLED_IMP (   CATEGORY,
  HOLDER_NAME 
)
Value:
static BloombergLP::balm::CategoryHolder HOLDER_NAME = { false, 0, 0 };   \
    if (BSLS_PERFORMANCEHINT_PREDICT_UNLIKELY(!HOLDER_NAME.category())        \
     && BSLS_PERFORMANCEHINT_PREDICT_UNLIKELY(                                \
                 BloombergLP::balm::DefaultMetricsManager::instance() != 0)) {\
        BloombergLP::balm::Metrics_Helper::initializeCategoryHolder(          \
                                                   &HOLDER_NAME, CATEGORY);   \
    }                                                                         \
    if (HOLDER_NAME.enabled())
#define BALM_METRICS_TIME_BLOCK_IMP (   CATEGORY,
  METRIC,
  TIME_UNITS,
  VARIABLE_NAME 
)
Value:
static BloombergLP::balm::Collector *VARIABLE_NAME = 0;                   \
    if (BloombergLP::balm::DefaultMetricsManager::instance()) {               \
       using namespace BloombergLP;                                           \
       if (0 == VARIABLE_NAME) {                                              \
           balm::CollectorRepository& repository =                            \
              balm::DefaultMetricsManager::instance()->collectorRepository(); \
           VARIABLE_NAME = repository.getDefaultCollector((CATEGORY),         \
                                                          (METRIC));          \
       }                                                                      \
    }                                                                         \
    else {                                                                    \
       VARIABLE_NAME = 0;                                                     \
    }                                                                         \
    BloombergLP::balm::StopwatchScopedGuard                                   \
         BALM_METRICS_UNIQUE_NAME(__bAlM_gUaRd)(VARIABLE_NAME, TIME_UNITS);
#define BALM_METRICS_DYNAMIC_TIME_BLOCK_IMP (   CATEGORY,
  METRIC,
  TIME_UNITS,
  VARIABLE_NAME 
)
Value:
BloombergLP::balm::Collector *VARIABLE_NAME = 0;                          \
    if (BloombergLP::balm::DefaultMetricsManager::instance()) {               \
        using namespace BloombergLP;                                          \
        balm::CollectorRepository& repository =                               \
             balm::DefaultMetricsManager::instance()->collectorRepository();  \
        VARIABLE_NAME = repository.getDefaultCollector((CATEGORY),            \
                                                       (METRIC));             \
    }                                                                         \
    BloombergLP::balm::StopwatchScopedGuard                                   \
         BALM_METRICS_UNIQUE_NAME(__bAlM_gUaRd)(VARIABLE_NAME, TIME_UNITS);
#define BALM_METRICS_UNIQNUM   __LINE__
#define BALM_METRICS_CAT (   X,
  Y 
)    BALM_METRICS_CAT_IMP(X, Y)
#define BALM_METRICS_CAT_IMP (   X,
  Y 
)    X##Y
#define BALM_METRICS_UNIQUE_NAME (   X  )     BALM_METRICS_CAT(X, BALM_METRICS_UNIQNUM)