]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/messages/PaxosServiceMessage.h
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / messages / PaxosServiceMessage.h
index a85ac9e6c4a6bf4d94e6c6678f62d10c015e057f..5b0b1bf5afbb99202113737977db33e5fd1b8004 100644 (file)
@@ -4,8 +4,8 @@
 #include "msg/Message.h"
 #include "mon/Session.h"
 
-class PaxosServiceMessage : public Message {
- public:
+class PaxosServiceMessage : public MessageSubType<PaxosServiceMessage> {
+public:
   version_t version;
   __s16 deprecated_session_mon;
   uint64_t deprecated_session_mon_tid;
@@ -15,27 +15,28 @@ class PaxosServiceMessage : public Message {
   epoch_t rx_election_epoch;
   
   PaxosServiceMessage()
-    : Message(MSG_PAXOS),
+    : MessageSubType(MSG_PAXOS),
       version(0), deprecated_session_mon(-1), deprecated_session_mon_tid(0),
       rx_election_epoch(0) { }
   PaxosServiceMessage(int type, version_t v, int enc_version=1, int compat_enc_version=0)
-    : Message(type, enc_version, compat_enc_version),
+    : MessageSubType(type, enc_version, compat_enc_version),
       version(v), deprecated_session_mon(-1), deprecated_session_mon_tid(0),
       rx_election_epoch(0)  { }
  protected:
-  ~PaxosServiceMessage() override {}
+  virtual ~PaxosServiceMessage() override {}
 
  public:
   void paxos_encode() {
-    ::encode(version, payload);
-    ::encode(deprecated_session_mon, payload);
-    ::encode(deprecated_session_mon_tid, payload);
+    using ceph::encode;
+    encode(version, payload);
+    encode(deprecated_session_mon, payload);
+    encode(deprecated_session_mon_tid, payload);
   }
 
-  void paxos_decode( bufferlist::iterator& p ) {
-    ::decode(version, p);
-    ::decode(deprecated_session_mon, p);
-    ::decode(deprecated_session_mon_tid, p);
+  void paxos_decode(bufferlist::const_iterator& p ) {
+    decode(version, p);
+    decode(deprecated_session_mon, p);
+    decode(deprecated_session_mon_tid, p);
   }
 
   void encode_payload(uint64_t features) override {
@@ -45,26 +46,11 @@ class PaxosServiceMessage : public Message {
 
   void decode_payload() override {
     ceph_abort();
-    bufferlist::iterator p = payload.begin();
+    auto p = payload.cbegin();
     paxos_decode(p);
   }
 
-  /** 
-   * These messages are only used by the monitors and clients,
-   * and the client doesn't care, so we're creating a monitor-specific
-   * function here. Note that this function explicitly exists to bypass
-   * the normal ref-counting, so don't expect the returned pointer to be
-   * very long-lived -- it will still only last as long as the Session would
-   * normally.
-   */
-  MonSession *get_session() {
-    MonSession *session = (MonSession *)get_connection()->get_priv();
-    if (session)
-      session->put();
-    return session;
-  }
-  
-  const char *get_type_name() const override { return "PaxosServiceMessage"; }
+  std::string_view get_type_name() const override { return "PaxosServiceMessage"; }
 };
 
 #endif