]> git.proxmox.com Git - ceph.git/blob - ceph/src/messages/MMDSMetrics.h
bump version to 18.2.2-pve1
[ceph.git] / ceph / src / messages / MMDSMetrics.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3
4 #ifndef CEPH_MDS_METRICS_H
5 #define CEPH_MDS_METRICS_H
6
7 #include "messages/MMDSOp.h"
8 #include "mds/MDSPerfMetricTypes.h"
9
10 class MMDSMetrics final : public MMDSOp {
11 private:
12 static constexpr int HEAD_VERSION = 1;
13 static constexpr int COMPAT_VERSION = 1;
14 public:
15 // metrics messsage (client -> metrics map, rank, etc..)
16 metrics_message_t metrics_message;
17
18 protected:
19 MMDSMetrics() : MMDSOp(MSG_MDS_METRICS, HEAD_VERSION, COMPAT_VERSION) {
20 }
21 MMDSMetrics(metrics_message_t metrics_message)
22 : MMDSOp(MSG_MDS_METRICS, HEAD_VERSION, COMPAT_VERSION),
23 metrics_message(metrics_message) {
24 }
25 ~MMDSMetrics() final {}
26
27 public:
28 std::string_view get_type_name() const override {
29 return "mds_metrics";
30 }
31
32 void print(std::ostream &out) const override {
33 out << "mds_metrics from rank=" << metrics_message.rank << " carrying "
34 << metrics_message.client_metrics_map.size() << " metric updates";
35 }
36
37 void encode_payload(uint64_t features) override {
38 using ceph::encode;
39 encode(metrics_message, payload, features);
40 }
41
42 void decode_payload() override {
43 using ceph::decode;
44 auto iter = payload.cbegin();
45 decode(metrics_message, iter);
46 }
47
48 private:
49 template<class T, typename... Args>
50 friend boost::intrusive_ptr<T> ceph::make_message(Args&&... args);
51 template<class T, typename... Args>
52 friend MURef<T> crimson::make_message(Args&&... args);
53 };
54
55 #endif // CEPH_MDS_METRICS_H