]> git.proxmox.com Git - ceph.git/blob - ceph/src/messages/MOSDBeacon.h
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / messages / MOSDBeacon.h
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 "PaxosServiceMessage.h"
7
8 class MOSDBeacon : public MessageInstance<MOSDBeacon, PaxosServiceMessage> {
9 public:
10 friend factory;
11
12 std::vector<pg_t> pgs;
13 epoch_t min_last_epoch_clean = 0;
14
15 MOSDBeacon()
16 : MessageInstance(MSG_OSD_BEACON, 0)
17 {}
18 MOSDBeacon(epoch_t e, epoch_t min_lec)
19 : MessageInstance(MSG_OSD_BEACON, e),
20 min_last_epoch_clean(min_lec)
21 {}
22 void encode_payload(uint64_t features) override {
23 using ceph::encode;
24 paxos_encode();
25 encode(pgs, payload);
26 encode(min_last_epoch_clean, payload);
27 }
28 void decode_payload() override {
29 auto p = payload.cbegin();
30 paxos_decode(p);
31 decode(pgs, p);
32 decode(min_last_epoch_clean, p);
33 }
34 std::string_view get_type_name() const override { return "osd_beacon"; }
35 void print(ostream &out) const {
36 out << get_type_name()
37 << "(pgs " << pgs
38 << " lec " << min_last_epoch_clean
39 << " v" << version << ")";
40 }
41 };