diff options
author | Devtools Arcadia <[email protected]> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <[email protected]> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /library/cpp/monlib/dynamic_counters/page.h |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'library/cpp/monlib/dynamic_counters/page.h')
-rw-r--r-- | library/cpp/monlib/dynamic_counters/page.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/library/cpp/monlib/dynamic_counters/page.h b/library/cpp/monlib/dynamic_counters/page.h new file mode 100644 index 00000000000..1f0ef6a5eaf --- /dev/null +++ b/library/cpp/monlib/dynamic_counters/page.h @@ -0,0 +1,50 @@ +#pragma once + +#include "counters.h" + +#include <library/cpp/monlib/service/pages/pre_mon_page.h> + +#include <util/generic/ptr.h> + +#include <functional> + +namespace NMonitoring { + enum class EUnknownGroupPolicy { + Error, // send 404 + Ignore, // send 204 + }; + + struct TDynamicCountersPage: public TPreMonPage { + public: + using TOutputCallback = std::function<void()>; + + private: + const TIntrusivePtr<TDynamicCounters> Counters; + TOutputCallback OutputCallback; + EUnknownGroupPolicy UnknownGroupPolicy {EUnknownGroupPolicy::Error}; + + private: + void HandleAbsentSubgroup(IMonHttpRequest& request); + + public: + TDynamicCountersPage(const TString& path, + const TString& title, + TIntrusivePtr<TDynamicCounters> counters, + TOutputCallback outputCallback = nullptr) + : TPreMonPage(path, title) + , Counters(counters) + , OutputCallback(outputCallback) + { + } + + void Output(NMonitoring::IMonHttpRequest& request) override; + + void BeforePre(NMonitoring::IMonHttpRequest& request) override; + + void OutputText(IOutputStream& out, NMonitoring::IMonHttpRequest&) override; + + /// If set to Error, responds with 404 if the requested subgroup is not found. This is the default. + /// If set to Ignore, responds with 204 if the requested subgroup is not found + void SetUnknownGroupPolicy(EUnknownGroupPolicy value); + }; +} |