]> git.proxmox.com Git - ceph.git/blame - ceph/src/messages/MConfig.h
import 15.2.0 Octopus source
[ceph.git] / ceph / src / messages / MConfig.h
CommitLineData
11fdf7f2
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 "msg/Message.h"
7
9f95a23c 8class MConfig : public Message {
11fdf7f2 9public:
11fdf7f2
TL
10 static constexpr int HEAD_VERSION = 1;
11 static constexpr int COMPAT_VERSION = 1;
12
9f95a23c
TL
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;
11fdf7f2 15
9f95a23c
TL
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)} {}
11fdf7f2
TL
23
24 std::string_view get_type_name() const override {
25 return "config";
26 }
9f95a23c 27 void print(std::ostream& o) const override {
11fdf7f2
TL
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};