1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
3 #ifndef CEPH_PAXOSSERVICEMESSAGE_H
4 #define CEPH_PAXOSSERVICEMESSAGE_H
6 #include "msg/Message.h"
7 #include "mon/Session.h"
9 class PaxosServiceMessage
: public Message
{
12 __s16 deprecated_session_mon
;
13 uint64_t deprecated_session_mon_tid
;
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
;
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) { }
28 virtual ~PaxosServiceMessage() override
{}
33 encode(version
, payload
);
34 encode(deprecated_session_mon
, payload
);
35 encode(deprecated_session_mon_tid
, payload
);
38 void paxos_decode(ceph::buffer::list::const_iterator
& p
) {
41 decode(deprecated_session_mon
, p
);
42 decode(deprecated_session_mon_tid
, p
);
45 void encode_payload(uint64_t features
) override
{
50 void decode_payload() override
{
52 auto p
= payload
.cbegin();
56 std::string_view
get_type_name() const override
{ return "PaxosServiceMessage"; }