]> git.proxmox.com Git - ceph.git/blame - ceph/src/messages/MOSDMarkMeDead.h
import quincy beta 17.1.0
[ceph.git] / ceph / src / messages / MOSDMarkMeDead.h
CommitLineData
9f95a23c
TL
1// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2// vim: ts=8 sw=2 smarttab
3
4#pragma once
5
6#include "messages/PaxosServiceMessage.h"
7
f67539c2 8class MOSDMarkMeDead final : public PaxosServiceMessage {
9f95a23c
TL
9private:
10 static constexpr int HEAD_VERSION = 1;
11 static constexpr int COMPAT_VERSION = 1;
12
13 public:
14 uuid_d fsid;
15 int32_t target_osd;
16 epoch_t epoch = 0;
17
18 MOSDMarkMeDead()
19 : PaxosServiceMessage{MSG_OSD_MARK_ME_DEAD, 0,
20 HEAD_VERSION, COMPAT_VERSION} { }
21 MOSDMarkMeDead(const uuid_d &fs, int osd,
22 epoch_t e)
23 : PaxosServiceMessage{MSG_OSD_MARK_ME_DEAD, e,
24 HEAD_VERSION, COMPAT_VERSION},
25 fsid(fs), target_osd(osd),
26 epoch(e) {}
27 private:
f67539c2 28 ~MOSDMarkMeDead() final {}
9f95a23c
TL
29
30public:
31 epoch_t get_epoch() const { return epoch; }
32
33 void decode_payload() override {
f67539c2 34 using ceph::decode;
9f95a23c
TL
35 auto p = payload.cbegin();
36 paxos_decode(p);
37 decode(fsid, p);
38 decode(target_osd, p);
39 decode(epoch, p);
40 }
41
42 void encode_payload(uint64_t features) override {
43 using ceph::encode;
44 paxos_encode();
45 header.version = HEAD_VERSION;
46 header.compat_version = COMPAT_VERSION;
47 encode(fsid, payload);
48 encode(target_osd, payload, features);
49 encode(epoch, payload);
50 }
51
52 std::string_view get_type_name() const override { return "MOSDMarkMeDead"; }
f67539c2 53 void print(std::ostream& out) const override {
9f95a23c
TL
54 out << "MOSDMarkMeDead("
55 << "osd." << target_osd
56 << ", epoch " << epoch
57 << ", fsid=" << fsid
58 << ")";
59 }
60private:
61 template<class T, typename... Args>
62 friend boost::intrusive_ptr<T> ceph::make_message(Args&&... args);
63};