]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/messages/MClientSnap.h
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / messages / MClientSnap.h
index 8e572bfd88d7a1870777964724c7870625d46fa9..f0f96e4eb128914b0f5ef35fd44587f557ac6ed8 100644 (file)
 
 #include "msg/Message.h"
 
-struct MClientSnap : public Message {
+class MClientSnap : public MessageInstance<MClientSnap> {
+public:
+  friend factory;
+
   ceph_mds_snap_head head;
   bufferlist bl;
   
@@ -25,16 +28,16 @@ struct MClientSnap : public Message {
   vector<inodeno_t> split_inos;
   vector<inodeno_t> split_realms;
 
+protected:
   MClientSnap(int o=0) : 
-    Message(CEPH_MSG_CLIENT_SNAP) {
+    MessageInstance(CEPH_MSG_CLIENT_SNAP) {
     memset(&head, 0, sizeof(head));
     head.op = o;
   }
-private:
   ~MClientSnap() override {}
 
 public:  
-  const char *get_type_name() const override { return "client_snap"; }
+  std::string_view get_type_name() const override { return "client_snap"; }
   void print(ostream& out) const override {
     out << "client_snap(" << ceph_snap_op_name(head.op);
     if (head.split)
@@ -44,21 +47,22 @@ public:
   }
 
   void encode_payload(uint64_t features) override {
+    using ceph::encode;
     head.num_split_inos = split_inos.size();
     head.num_split_realms = split_realms.size();
     head.trace_len = bl.length();
-    ::encode(head, payload);
-    ::encode_nohead(split_inos, payload);
-    ::encode_nohead(split_realms, payload);
-    ::encode_nohead(bl, payload);
+    encode(head, payload);
+    encode_nohead(split_inos, payload);
+    encode_nohead(split_realms, payload);
+    encode_nohead(bl, payload);
   }
   void decode_payload() override {
-    bufferlist::iterator p = payload.begin();
-    ::decode(head, p);
-    ::decode_nohead(head.num_split_inos, split_inos, p);
-    ::decode_nohead(head.num_split_realms, split_realms, p);
-    ::decode_nohead(head.trace_len, bl, p);
-    assert(p.end());
+    auto p = payload.cbegin();
+    decode(head, p);
+    decode_nohead(head.num_split_inos, split_inos, p);
+    decode_nohead(head.num_split_realms, split_realms, p);
+    decode_nohead(head.trace_len, bl, p);
+    ceph_assert(p.end());
   }
 
 };