lintel 0.2.0
Loading...
Searching...
No Matches
TlsReloadRegistry.h
Go to the documentation of this file.
1#ifndef LINTEL_TLSRELOADREGISTRY_H
2#define LINTEL_TLSRELOADREGISTRY_H
3
4#include <cstddef>
5#include <functional>
6#include <mutex>
7#include <string>
8#include <utility>
9#include <vector>
10
11namespace lintel {
38{
39public:
41 using ReloadId = std::size_t;
42
45 {
47 std::string m_name;
49 bool m_reloaded = false;
51 std::string m_detail;
52 };
53
57 using Handler = std::function<std::string()>;
58
61
68
74
76 void clear();
77
83 std::vector<ReloadResult> reload() const;
84
85private:
86 TlsReloadRegistry() = default;
87
88 struct Entry
89 {
90 ReloadId m_id = 0;
91 std::string m_name;
92 Handler m_handler;
93 };
94
95 mutable std::mutex m_mutex;
96 std::vector<Entry> m_entries;
97 ReloadId m_nextId = 1;
98};
99}// namespace lintel
100#endif// LINTEL_TLSRELOADREGISTRY_H
Definition TlsReloadRegistry.h:38
std::size_t ReloadId
Definition TlsReloadRegistry.h:41
std::function< std::string()> Handler
Definition TlsReloadRegistry.h:57
static TlsReloadRegistry & instance()
ReloadId registerHandler(std::string name, Handler handler)
void unregisterHandler(ReloadId id)
std::vector< ReloadResult > reload() const
Definition BaseFeature.h:6
constexpr std::string_view type_name()
Definition TypeName.h:9
Definition TlsReloadRegistry.h:45
bool m_reloaded
Definition TlsReloadRegistry.h:49
std::string m_detail
Definition TlsReloadRegistry.h:51
std::string m_name
Definition TlsReloadRegistry.h:47