snapshot.h 1.5 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
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.
//

羽飞's avatar
羽飞 已提交
15
#pragma once
羽飞's avatar
羽飞 已提交
16 17 18 19 20 21 22 23

#include <string>
#include "common/lang/string.h"

namespace common {

class Snapshot {
public:
24
  virtual ~Snapshot(){};
羽飞's avatar
羽飞 已提交
25 26 27 28 29 30
  virtual std::string to_string() = 0;
};

template <class T>
class SnapshotBasic : public Snapshot {
public:
31 32
  SnapshotBasic()
      : value(){
羽飞's avatar
羽飞 已提交
33

34
        };
羽飞's avatar
羽飞 已提交
35

36 37
  virtual ~SnapshotBasic()
  {}
羽飞's avatar
羽飞 已提交
38

39 40 41 42
  void setValue(T &input)
  {
    value = input;
  }
羽飞's avatar
羽飞 已提交
43

44 45
  std::string to_string()
  {
羽飞's avatar
羽飞 已提交
46 47 48 49 50 51 52 53 54
    std::string ret;
    val_to_str(value, ret);
    return ret;
  }

private:
  T value;
};

55
class SimplerTimerSnapshot : public Snapshot {
羽飞's avatar
羽飞 已提交
56
public:
57 58
  SimplerTimerSnapshot()
  {}
羽飞's avatar
羽飞 已提交
59

60 61
  virtual ~SimplerTimerSnapshot()
  {}
羽飞's avatar
羽飞 已提交
62

63 64
  void setValue(double mean, double tps)
  {
羽飞's avatar
羽飞 已提交
65 66 67 68
    this->mean = mean;
    this->tps = tps;
  }

69 70
  std::string to_string()
  {
羽飞's avatar
羽飞 已提交
71
    std::stringstream oss;
72
    oss << "mean:" << mean << ",tps:" << tps;
羽飞's avatar
羽飞 已提交
73 74 75

    return oss.str();
  }
76

羽飞's avatar
羽飞 已提交
77 78 79 80
private:
  double mean = 1.0;
  double tps = 1.0;
};
81
}  // namespace common