]> git.proxmox.com Git - ceph.git/blob - ceph/src/messages/MConfig.h
d/control: depend on python3-yaml for ceph-mgr
[ceph.git] / ceph / src / messages / MConfig.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 "msg/Message.h"
7
8 class MConfig : public Message {
9 public:
10 static constexpr int HEAD_VERSION = 1;
11 static constexpr int COMPAT_VERSION = 1;
12
13 // use transparent comparator so we can lookup in it by std::string_view keys
14 std::map<std::string,std::string,std::less<>> config;
15
16 MConfig() : Message{MSG_CONFIG, HEAD_VERSION, COMPAT_VERSION} { }
17 MConfig(const std::map<std::string,std::string,std::less<>>& c)
18 : Message{MSG_CONFIG, HEAD_VERSION, COMPAT_VERSION},
19 config{c} {}
20 MConfig(std::map<std::string,std::string,std::less<>>&& c)
21 : Message{MSG_CONFIG, HEAD_VERSION, COMPAT_VERSION},
22 config{std::move(c)} {}
23
24 std::string_view get_type_name() const override {
25 return "config";
26 }
27 void print(std::ostream& o) const override {
28 o << "config(" << config.size() << " keys" << ")";
29 }
30
31 void decode_payload() override {
32 using ceph::decode;
33 auto p = payload.cbegin();
34 decode(config, p);
35 }
36
37 void encode_payload(uint64_t) override {
38 using ceph::encode;
39 encode(config, payload);
40 }
41
42 };