diff options
author | Cthulhu <cthulhu@yandex-team.ru> | 2022-02-10 16:47:44 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:47:44 +0300 |
commit | 6aced6c854653b75aab9808d5995be5fc4d9fa53 (patch) | |
tree | c0748b5dcbade83af788c0abfa89c0383d6b779c /library/cpp/lwtrace/example2/lwtrace_example2.cpp | |
parent | bcb3e9d0eb2a8188a6a9fe0907a8949ce4881a4e (diff) | |
download | ydb-6aced6c854653b75aab9808d5995be5fc4d9fa53.tar.gz |
Restoring authorship annotation for Cthulhu <cthulhu@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/lwtrace/example2/lwtrace_example2.cpp')
-rw-r--r-- | library/cpp/lwtrace/example2/lwtrace_example2.cpp | 186 |
1 files changed, 93 insertions, 93 deletions
diff --git a/library/cpp/lwtrace/example2/lwtrace_example2.cpp b/library/cpp/lwtrace/example2/lwtrace_example2.cpp index 6ad4cc96f1..7a4f7a1daf 100644 --- a/library/cpp/lwtrace/example2/lwtrace_example2.cpp +++ b/library/cpp/lwtrace/example2/lwtrace_example2.cpp @@ -1,117 +1,117 @@ #include <library/cpp/lwtrace/control.h> #include <library/cpp/lwtrace/all.h> - + #include <library/cpp/getopt/last_getopt.h> #include <google/protobuf/text_format.h> -#include <util/stream/file.h> - +#include <util/stream/file.h> + #define LWTRACE_EXAMPLE_PROVIDER(PROBE, EVENT, GROUPS, TYPES, NAMES) \ PROBE(StartupProbe, GROUPS(), TYPES(), NAMES()) \ PROBE(IterationProbe, GROUPS(), TYPES(i64, double), NAMES("n", "result")) \ - PROBE(DurationProbe, GROUPS(), TYPES(ui64, i64, double), NAMES("duration", "n", "result")) \ + PROBE(DurationProbe, GROUPS(), TYPES(ui64, i64, double), NAMES("duration", "n", "result")) \ PROBE(ResultProbe, GROUPS(), TYPES(double), NAMES("factN")) \ PROBE(AfterInputProbe, GROUPS(), TYPES(i32), NAMES("n")) \ - /**/ - -LWTRACE_DECLARE_PROVIDER(LWTRACE_EXAMPLE_PROVIDER) -LWTRACE_DEFINE_PROVIDER(LWTRACE_EXAMPLE_PROVIDER) - + /**/ + +LWTRACE_DECLARE_PROVIDER(LWTRACE_EXAMPLE_PROVIDER) +LWTRACE_DEFINE_PROVIDER(LWTRACE_EXAMPLE_PROVIDER) + THolder<NLWTrace::TManager> traceManager; - -struct TConfig { - bool UnsafeLWTrace; + +struct TConfig { + bool UnsafeLWTrace; TString TraceRequestPath; -}; - -void InitLWTrace(TConfig& cfg) { +}; + +void InitLWTrace(TConfig& cfg) { traceManager.Reset(new NLWTrace::TManager(*Singleton<NLWTrace::TProbeRegistry>(), cfg.UnsafeLWTrace)); -} - -void AddLWTraceRequest(TConfig& cfg) { +} + +void AddLWTraceRequest(TConfig& cfg) { TString queryStr = TUnbufferedFileInput(cfg.TraceRequestPath).ReadAll(); - NLWTrace::TQuery query; - google::protobuf::TextFormat::ParseFromString(queryStr, &query); - traceManager->New("TraceRequest1", query); -} - -class TLogReader { -public: + NLWTrace::TQuery query; + google::protobuf::TextFormat::ParseFromString(queryStr, &query); + traceManager->New("TraceRequest1", query); +} + +class TLogReader { +public: void Push(TThread::TId tid, const NLWTrace::TCyclicLog::TItem& item) { - Cout << "tid=" << tid << " probe=" << item.Probe->Event.Name; - if (item.Timestamp != TInstant::Zero()) { - Cout << " time=" << item.Timestamp; - } - if (item.SavedParamsCount > 0) { + Cout << "tid=" << tid << " probe=" << item.Probe->Event.Name; + if (item.Timestamp != TInstant::Zero()) { + Cout << " time=" << item.Timestamp; + } + if (item.SavedParamsCount > 0) { TString paramValues[LWTRACE_MAX_PARAMS]; - item.Probe->Event.Signature.SerializeParams(item.Params, paramValues); - Cout << " params: "; - for (size_t i = 0; i < item.SavedParamsCount; ++i) { - Cout << " " << item.Probe->Event.Signature.ParamNames[i] << "=" << paramValues[i]; - } - } - Cout << Endl; - } -}; - -void DisplayLWTraceLog() { - Cout << "LWTrace log:" << Endl; - TLogReader reader; - traceManager->ReadLog("TraceRequest1", reader); -} - + item.Probe->Event.Signature.SerializeParams(item.Params, paramValues); + Cout << " params: "; + for (size_t i = 0; i < item.SavedParamsCount; ++i) { + Cout << " " << item.Probe->Event.Signature.ParamNames[i] << "=" << paramValues[i]; + } + } + Cout << Endl; + } +}; + +void DisplayLWTraceLog() { + Cout << "LWTrace log:" << Endl; + TLogReader reader; + traceManager->ReadLog("TraceRequest1", reader); +} + long double Fact(i64 n) { - if (n < 0) { - ythrow yexception() << "N! is undefined for negative N (" << n << ")"; - } - double result = 1; - for (; n > 1; --n) { - GLOBAL_LWPROBE(LWTRACE_EXAMPLE_PROVIDER, IterationProbe, n, result); - GLOBAL_LWPROBE_DURATION(LWTRACE_EXAMPLE_PROVIDER, DurationProbe, n, result); - - result *= n; - } - return result; -} - -void FactorialCalculator() { - GLOBAL_LWPROBE(LWTRACE_EXAMPLE_PROVIDER, StartupProbe); - - i32 n; - Cout << "Enter a number: "; + if (n < 0) { + ythrow yexception() << "N! is undefined for negative N (" << n << ")"; + } + double result = 1; + for (; n > 1; --n) { + GLOBAL_LWPROBE(LWTRACE_EXAMPLE_PROVIDER, IterationProbe, n, result); + GLOBAL_LWPROBE_DURATION(LWTRACE_EXAMPLE_PROVIDER, DurationProbe, n, result); + + result *= n; + } + return result; +} + +void FactorialCalculator() { + GLOBAL_LWPROBE(LWTRACE_EXAMPLE_PROVIDER, StartupProbe); + + i32 n; + Cout << "Enter a number: "; TString str; - Cin >> n; - - GLOBAL_LWPROBE(LWTRACE_EXAMPLE_PROVIDER, AfterInputProbe, n); - - double factN = Fact(n); - Cout << n << "! = " << factN << Endl << Endl; - - GLOBAL_LWPROBE(LWTRACE_EXAMPLE_PROVIDER, ResultProbe, factN); -} - -int main(int argc, char** argv) { - TConfig cfg; - using namespace NLastGetopt; - TOpts opts = NLastGetopt::TOpts::Default(); - opts.AddLongOption('u', "unsafe-lwtrace", + Cin >> n; + + GLOBAL_LWPROBE(LWTRACE_EXAMPLE_PROVIDER, AfterInputProbe, n); + + double factN = Fact(n); + Cout << n << "! = " << factN << Endl << Endl; + + GLOBAL_LWPROBE(LWTRACE_EXAMPLE_PROVIDER, ResultProbe, factN); +} + +int main(int argc, char** argv) { + TConfig cfg; + using namespace NLastGetopt; + TOpts opts = NLastGetopt::TOpts::Default(); + opts.AddLongOption('u', "unsafe-lwtrace", "allow destructive LWTrace actions") .OptionalValue(ToString(true)) .DefaultValue(ToString(false)) .StoreResult(&cfg.UnsafeLWTrace); - opts.AddLongOption('f', "trace-request", + opts.AddLongOption('f', "trace-request", "specify a file containing LWTrace request") .DefaultValue("example_query.tr") .StoreResult(&cfg.TraceRequestPath); - opts.AddHelpOption('h'); - TOptsParseResult res(&opts, argc, argv); - - InitLWTrace(cfg); - - AddLWTraceRequest(cfg); - - FactorialCalculator(); - - DisplayLWTraceLog(); - - return 0; -} + opts.AddHelpOption('h'); + TOptsParseResult res(&opts, argc, argv); + + InitLWTrace(cfg); + + AddLWTraceRequest(cfg); + + FactorialCalculator(); + + DisplayLWTraceLog(); + + return 0; +} |