]> git.proxmox.com Git - ceph.git/blob - ceph/src/messages/PaxosServiceMessage.h
import 15.2.0 Octopus source
[ceph.git] / ceph / src / messages / PaxosServiceMessage.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2
3 #ifndef CEPH_PAXOSSERVICEMESSAGE_H
4 #define CEPH_PAXOSSERVICEMESSAGE_H
5
6 #include "msg/Message.h"
7 #include "mon/Session.h"
8
9 class PaxosServiceMessage : public Message {
10 public:
11 version_t version;
12 __s16 deprecated_session_mon;
13 uint64_t deprecated_session_mon_tid;
14
15 // track which epoch the leader received a forwarded request in, so we can
16 // discard forwarded requests appropriately on election boundaries.
17 epoch_t rx_election_epoch;
18
19 PaxosServiceMessage()
20 : Message{MSG_PAXOS},
21 version(0), deprecated_session_mon(-1), deprecated_session_mon_tid(0),
22 rx_election_epoch(0) { }
23 PaxosServiceMessage(int type, version_t v, int enc_version=1, int compat_enc_version=0)
24 : Message{type, enc_version, compat_enc_version},
25 version(v), deprecated_session_mon(-1), deprecated_session_mon_tid(0),
26 rx_election_epoch(0) { }
27 protected:
28 virtual ~PaxosServiceMessage() override {}
29
30 public:
31 void paxos_encode() {
32 using ceph::encode;
33 encode(version, payload);
34 encode(deprecated_session_mon, payload);
35 encode(deprecated_session_mon_tid, payload);
36 }
37
38 void paxos_decode(ceph::buffer::list::const_iterator& p ) {
39 using ceph::decode;
40 decode(version, p);
41 decode(deprecated_session_mon, p);
42 decode(deprecated_session_mon_tid, p);
43 }
44
45 void encode_payload(uint64_t features) override {
46 ceph_abort();
47 paxos_encode();
48 }
49
50 void decode_payload() override {
51 ceph_abort();
52 auto p = payload.cbegin();
53 paxos_decode(p);
54 }
55
56 std::string_view get_type_name() const override { return "PaxosServiceMessage"; }
57 };
58
59 #endif