metrics_registry.h 1.3 KB
Newer Older
羽飞's avatar
羽飞 已提交
1
/* Copyright (c) 2021 OceanBase and/or its affiliates. All rights reserved.
羽飞's avatar
羽飞 已提交
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
miniob is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
         http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details. */

//
// Created by Longda on 2021/4/20.
//

#ifndef __COMMON_METRICS_METRICS_REGISTRY_H__
#define __COMMON_METRICS_METRICS_REGISTRY_H__

#include <string>
#include <map>
#include <list>

#include "common/metrics/metric.h"
#include "common/metrics/reporter.h"

namespace common {

class MetricsRegistry {
public:
29
  MetricsRegistry(){};
羽飞's avatar
羽飞 已提交
30 31 32 33 34 35 36 37 38
  virtual ~MetricsRegistry(){};

  void register_metric(const std::string &tag, Metric *metric);
  void unregister(const std::string &tag);

  void snapshot();

  void report();

39 40
  void add_reporter(Reporter *reporter)
  {
羽飞's avatar
羽飞 已提交
41 42 43 44 45 46 47 48
    reporters.push_back(reporter);
  }

protected:
  std::map<std::string, Metric *> metrics;
  std::list<Reporter *> reporters;
};

49 50 51
MetricsRegistry &get_metrics_registry();
}  // namespace common
#endif  //__COMMON_METRICS_METRICS_REGISTRY_H__