10#include <userver/components/loggable_component_base.hpp>
11#include <userver/concurrent/async_event_source.hpp>
12#include <userver/dynamic_config/snapshot.hpp>
13#include <userver/dynamic_config/source.hpp>
14#include <userver/dynamic_config/updates_sink/component.hpp>
15#include <userver/utils/fast_pimpl.hpp>
17USERVER_NAMESPACE_BEGIN
73 class NoblockSubscriber;
75 DynamicConfig(
const ComponentConfig&,
const ComponentContext&);
76 ~DynamicConfig()
override;
89 void OnLoadingCancelled()
override;
91 void SetConfig(std::string_view updater,
92 dynamic_config::DocsMap&& value)
override;
94 void SetConfig(std::string_view updater,
95 const dynamic_config::DocsMap& value)
override;
97 void NotifyLoadingFailed(std::string_view updater,
98 std::string_view error)
override;
101 std::unique_ptr<Impl> impl_;
106class DynamicConfig::NoblockSubscriber
final {
108 explicit NoblockSubscriber(DynamicConfig& config_component)
noexcept;
110 NoblockSubscriber(NoblockSubscriber&&) =
delete;
111 NoblockSubscriber& operator=(NoblockSubscriber&&) =
delete;
113 concurrent::AsyncEventSource<
const dynamic_config::Snapshot&>&
114 GetEventSource()
noexcept;
117 DynamicConfig& config_component_;
121inline constexpr bool kHasValidate<DynamicConfig> =
true;
124inline constexpr auto kConfigFileMode<DynamicConfig> =