]> git.proxmox.com Git - ceph.git/blame - ceph/src/messages/MClientMetrics.h
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / messages / MClientMetrics.h
CommitLineData
f67539c2
TL
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_CLIENT_METRICS_H
5#define CEPH_MDS_CLIENT_METRICS_H
6
7#include <vector>
8
9#include "msg/Message.h"
10#include "include/cephfs/metrics/Types.h"
11
12class MClientMetrics final : public SafeMessage {
13private:
14 static constexpr int HEAD_VERSION = 1;
15 static constexpr int COMPAT_VERSION = 1;
16public:
17 std::vector<ClientMetricMessage> updates;
18
19protected:
20 MClientMetrics() : MClientMetrics(std::vector<ClientMetricMessage>{}) { }
21 MClientMetrics(std::vector<ClientMetricMessage> updates)
22 : SafeMessage(CEPH_MSG_CLIENT_METRICS, HEAD_VERSION, COMPAT_VERSION), updates(updates) {
23 }
24 ~MClientMetrics() final {}
25
26public:
27 std::string_view get_type_name() const override {
28 return "client_metrics";
29 }
30
31 void print(ostream &out) const override {
32 out << "client_metrics ";
33 for (auto &i : updates) {
34 i.print(&out);
35 }
36 }
37
38 void encode_payload(uint64_t features) override {
39 using ceph::encode;
40 encode(updates, payload);
41 }
42
43 void decode_payload() override {
44 using ceph::decode;
45 auto iter = payload.cbegin();
46 decode(updates, iter);
47 }
48
49private:
50 template<class T, typename... Args>
51 friend boost::intrusive_ptr<T> ceph::make_message(Args&&... args);
52};
53
54#endif // CEPH_MDS_CLIENT_METRICS_H