]> git.proxmox.com Git - ceph.git/blob - ceph/src/messages/MClientQuota.h
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / messages / MClientQuota.h
1 #ifndef CEPH_MCLIENTQUOTA_H
2 #define CEPH_MCLIENTQUOTA_H
3
4 #include "msg/Message.h"
5
6 class MClientQuota final : public SafeMessage {
7 public:
8 inodeno_t ino;
9 nest_info_t rstat;
10 quota_info_t quota;
11
12 protected:
13 MClientQuota() :
14 SafeMessage{CEPH_MSG_CLIENT_QUOTA},
15 ino(0)
16 {}
17 ~MClientQuota() final {}
18
19 public:
20 std::string_view get_type_name() const override { return "client_quota"; }
21 void print(std::ostream& out) const override {
22 out << "client_quota(";
23 out << " [" << ino << "] ";
24 out << rstat << " ";
25 out << quota;
26 out << ")";
27 }
28
29 void encode_payload(uint64_t features) override {
30 using ceph::encode;
31 encode(ino, payload);
32 encode(rstat.rctime, payload);
33 encode(rstat.rbytes, payload);
34 encode(rstat.rfiles, payload);
35 encode(rstat.rsubdirs, payload);
36 encode(quota, payload);
37 }
38 void decode_payload() override {
39 using ceph::decode;
40 auto p = payload.cbegin();
41 decode(ino, p);
42 decode(rstat.rctime, p);
43 decode(rstat.rbytes, p);
44 decode(rstat.rfiles, p);
45 decode(rstat.rsubdirs, p);
46 decode(quota, p);
47 ceph_assert(p.end());
48 }
49 private:
50 template<class T, typename... Args>
51 friend boost::intrusive_ptr<T> ceph::make_message(Args&&... args);
52 };
53
54 #endif