1 #ifndef CEPH_PAXOSSERVICEMESSAGE_H
2 #define CEPH_PAXOSSERVICEMESSAGE_H
4 #include "msg/Message.h"
5 #include "mon/Session.h"
7 class PaxosServiceMessage
: public Message
{
10 __s16 deprecated_session_mon
;
11 uint64_t deprecated_session_mon_tid
;
13 // track which epoch the leader received a forwarded request in, so we can
14 // discard forwarded requests appropriately on election boundaries.
15 epoch_t rx_election_epoch
;
19 version(0), deprecated_session_mon(-1), deprecated_session_mon_tid(0),
20 rx_election_epoch(0) { }
21 PaxosServiceMessage(int type
, version_t v
, int enc_version
=1, int compat_enc_version
=0)
22 : Message(type
, enc_version
, compat_enc_version
),
23 version(v
), deprecated_session_mon(-1), deprecated_session_mon_tid(0),
24 rx_election_epoch(0) { }
26 ~PaxosServiceMessage() override
{}
30 ::encode(version
, payload
);
31 ::encode(deprecated_session_mon
, payload
);
32 ::encode(deprecated_session_mon_tid
, payload
);
35 void paxos_decode( bufferlist::iterator
& p
) {
37 ::decode(deprecated_session_mon
, p
);
38 ::decode(deprecated_session_mon_tid
, p
);
41 void encode_payload(uint64_t features
) override
{
46 void decode_payload() override
{
48 bufferlist::iterator p
= payload
.begin();
53 * These messages are only used by the monitors and clients,
54 * and the client doesn't care, so we're creating a monitor-specific
55 * function here. Note that this function explicitly exists to bypass
56 * the normal ref-counting, so don't expect the returned pointer to be
57 * very long-lived -- it will still only last as long as the Session would
60 MonSession
*get_session() {
61 MonSession
*session
= (MonSession
*)get_connection()->get_priv();
67 const char *get_type_name() const override
{ return "PaxosServiceMessage"; }