]>
Commit | Line | Data |
---|---|---|
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 | ||
20effc67 | 6 | #include <optional> |
11fdf7f2 TL |
7 | |
8 | #include "ConfigMap.h" | |
9 | #include "mon/PaxosService.h" | |
10 | ||
11 | class MonSession; | |
12 | ||
13 | class ConfigMonitor : public PaxosService | |
14 | { | |
15 | version_t version = 0; | |
16 | ConfigMap config_map; | |
20effc67 | 17 | std::map<std::string,std::optional<ceph::buffer::list>> pending; |
f67539c2 | 18 | std::string pending_description; |
20effc67 | 19 | std::map<std::string,std::optional<ceph::buffer::list>> pending_cleanup; |
11fdf7f2 | 20 | |
f67539c2 TL |
21 | std::map<std::string,ceph::buffer::list> current; |
22 | ||
23 | void encode_pending_to_kvmon(); | |
11fdf7f2 TL |
24 | |
25 | public: | |
f67539c2 | 26 | ConfigMonitor(Monitor &m, Paxos &p, const std::string& service_name); |
11fdf7f2 TL |
27 | |
28 | void init() override; | |
29 | ||
30 | void load_config(); | |
31 | void load_changeset(version_t v, ConfigChangeSet *ch); | |
32 | ||
33 | bool preprocess_query(MonOpRequestRef op) override; | |
34 | bool prepare_update(MonOpRequestRef op) override; | |
35 | ||
36 | bool preprocess_command(MonOpRequestRef op); | |
37 | bool prepare_command(MonOpRequestRef op); | |
38 | ||
39 | void handle_get_config(MonOpRequestRef op); | |
40 | ||
41 | void create_initial() override; | |
42 | void update_from_paxos(bool *need_bootstrap) override; | |
43 | void create_pending() override; | |
44 | void encode_pending(MonitorDBStore::TransactionRef t) override; | |
45 | version_t get_trim_to() const override; | |
46 | ||
47 | void encode_full(MonitorDBStore::TransactionRef t) override { } | |
48 | ||
49 | void on_active() override; | |
50 | void tick() override; | |
51 | ||
52 | bool refresh_config(MonSession *s); | |
53 | bool maybe_send_config(MonSession *s); | |
54 | void send_config(MonSession *s); | |
55 | void check_sub(MonSession *s); | |
56 | void check_sub(Subscription *sub); | |
57 | void check_all_subs(); | |
58 | }; |