// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- #ifndef CEPH_PAXOSSERVICEMESSAGE_H #define CEPH_PAXOSSERVICEMESSAGE_H #include "msg/Message.h" #include "mon/Session.h" class PaxosServiceMessage : public Message { public: version_t version; __s16 deprecated_session_mon; uint64_t deprecated_session_mon_tid; // track which epoch the leader received a forwarded request in, so we can // discard forwarded requests appropriately on election boundaries. epoch_t rx_election_epoch; PaxosServiceMessage() : Message{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}, version(v), deprecated_session_mon(-1), deprecated_session_mon_tid(0), rx_election_epoch(0) { } protected: ~PaxosServiceMessage() override {} public: void paxos_encode() { using ceph::encode; encode(version, payload); encode(deprecated_session_mon, payload); encode(deprecated_session_mon_tid, payload); } void paxos_decode(ceph::buffer::list::const_iterator& p ) { using ceph::decode; decode(version, p); decode(deprecated_session_mon, p); decode(deprecated_session_mon_tid, p); } void encode_payload(uint64_t features) override { ceph_abort(); paxos_encode(); } void decode_payload() override { ceph_abort(); auto p = payload.cbegin(); paxos_decode(p); } std::string_view get_type_name() const override { return "PaxosServiceMessage"; } }; #endif