]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/messages/MOSDPGTrim.h
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / messages / MOSDPGTrim.h
index 35168e0f484667c98f3fe6ad8b71c9bd0f7dc093..e596d12bde732d796b09f3496a31cd885d49d781 100644 (file)
 #define CEPH_MOSDPGTRIM_H
 
 #include "msg/Message.h"
+#include "messages/MOSDPeeringOp.h"
 
-class MOSDPGTrim : public Message {
-
-  static const int HEAD_VERSION = 2;
-  static const int COMPAT_VERSION = 2;
+class MOSDPGTrim : public MessageInstance<MOSDPGTrim, MOSDPeeringOp> {
+public:
+  friend factory;
+private:
+  static constexpr int HEAD_VERSION = 2;
+  static constexpr int COMPAT_VERSION = 2;
 
 public:
   epoch_t epoch = 0;
@@ -28,32 +31,48 @@ public:
   eversion_t trim_to;
 
   epoch_t get_epoch() const { return epoch; }
+  spg_t get_spg() const {
+    return pgid;
+  }
+  epoch_t get_map_epoch() const {
+    return epoch;
+  }
+  epoch_t get_min_epoch() const {
+    return epoch;
+  }
+  PGPeeringEvent *get_event() override {
+    return new PGPeeringEvent(
+      epoch,
+      epoch,
+      MTrim(epoch, get_source().num(), pgid.shard, trim_to));
+  }
 
-  MOSDPGTrim() : Message(MSG_OSD_PG_TRIM, HEAD_VERSION, COMPAT_VERSION) {}
+  MOSDPGTrim() : MessageInstance(MSG_OSD_PG_TRIM, HEAD_VERSION, COMPAT_VERSION) {}
   MOSDPGTrim(version_t mv, spg_t p, eversion_t tt) :
-    Message(MSG_OSD_PG_TRIM, HEAD_VERSION, COMPAT_VERSION),
+    MessageInstance(MSG_OSD_PG_TRIM, HEAD_VERSION, COMPAT_VERSION),
     epoch(mv), pgid(p), trim_to(tt) { }
 private:
   ~MOSDPGTrim() override {}
 
 public:
-  const char *get_type_name() const override { return "pg_trim"; }
-  void print(ostream& out) const override {
-    out << "pg_trim(" << pgid << " to " << trim_to << " e" << epoch << ")";
+  std::string_view get_type_name() const override { return "pg_trim"; }
+  void inner_print(ostream& out) const override {
+    out << trim_to;
   }
 
   void encode_payload(uint64_t features) override {
-    ::encode(epoch, payload);
-    ::encode(pgid.pgid, payload);
-    ::encode(trim_to, payload);
-    ::encode(pgid.shard, payload);
+    using ceph::encode;
+    encode(epoch, payload);
+    encode(pgid.pgid, payload);
+    encode(trim_to, payload);
+    encode(pgid.shard, payload);
   }
   void decode_payload() override {
-    bufferlist::iterator p = payload.begin();
-    ::decode(epoch, p);
-    ::decode(pgid.pgid, p);
-    ::decode(trim_to, p);
-    ::decode(pgid.shard, p);
+    auto p = payload.cbegin();
+    decode(epoch, p);
+    decode(pgid.pgid, p);
+    decode(trim_to, p);
+    decode(pgid.shard, p);
   }
 };