aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/ipreg/util_helpers.h
diff options
context:
space:
mode:
authorvvvv <vvvv@ydb.tech>2023-07-31 18:21:04 +0300
committervvvv <vvvv@ydb.tech>2023-07-31 18:21:04 +0300
commitdec41c40e51aa407edef81a3c566a5a15780fc49 (patch)
tree4f197b596b32f35eca368121f0dff913419da9af /library/cpp/ipreg/util_helpers.h
parent3ca8b54c96e09eb2b65be7f09675623438d559c7 (diff)
downloadydb-dec41c40e51aa407edef81a3c566a5a15780fc49.tar.gz
YQL-16239 Move purecalc to public
Diffstat (limited to 'library/cpp/ipreg/util_helpers.h')
-rw-r--r--library/cpp/ipreg/util_helpers.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/library/cpp/ipreg/util_helpers.h b/library/cpp/ipreg/util_helpers.h
new file mode 100644
index 0000000000..eab2dfb320
--- /dev/null
+++ b/library/cpp/ipreg/util_helpers.h
@@ -0,0 +1,65 @@
+#pragma once
+
+#include <library/cpp/getopt/opt.h>
+#include <util/generic/string.h>
+#include <util/generic/maybe.h>
+
+class IInputStream;
+class IOutputStream;
+
+namespace NJson {
+ class TJsonValue;
+}
+
+namespace NIPREG {
+ class TReader;
+
+ // @input any form of range+payload
+ // @output $ip.begin-$ip.end \t {"region_id":$reg,"reliability":$rel}
+ void DoCoarsening(IInputStream& input, IOutputStream& output);
+
+ struct MergeTraits {
+ const TVector<TString> ExcludeFieldsList;
+ TString ConcatSep;
+ bool SortData{};
+ bool CountMerges{};
+ bool JoinNestedRanges{};
+ };
+
+ void DoMerging(TReader& input, IOutputStream& output, const MergeTraits& traits);
+ void DoMerging3(TReader& input, IOutputStream& output, const TString& geodata, bool ByRegsOnly = false, bool silentMode = false);
+ void DoMergeEqualsRange(TReader& input, IOutputStream& output);
+
+ void DoPatching(TReader& base, TReader& patch, IOutputStream& output, bool sortData = false);
+
+ void AddStubRanges(TReader& input, IOutputStream& output);
+
+ void CheckAddressSpaceForCompleteness(IInputStream& input, IOutputStream& output);
+ void CheckRangesForMonotonicSequence(IInputStream& input, IOutputStream& output, bool IsStrict = false);
+
+ NJson::TJsonValue ParseJsonString(const TString& data);
+ TString SortJsonData(const NJson::TJsonValue& json);
+ TString SortJsonData(const TString& json);
+
+ TString AddJsonAttrs(const TVector<TString>& addFieldsList, const TString& jsonStr, const TMaybe<TString>& attrValue);
+ TString ExcludeJsonAttrs(const TVector<TString>& excludeFieldsList, const TString& jsonStr);
+ TString ExtractJsonAttrs(const TVector<TString>& excludeFieldsList, const TString& jsonStr);
+
+ extern const TString STUB_DATA;
+
+ struct DefaultCliParams {
+ DefaultCliParams();
+
+ NLastGetopt::TOpts& GetOpts() { return Opts; }
+ void Parse(int argc, const char **argv);
+ void ApplyFlags() const;
+
+ TString InputFname = "-";
+ TString OutputFname = "";
+ bool OutputFullIp = false;
+ bool PrintStats = false;
+ bool PrintYtStats = false;
+
+ NLastGetopt::TOpts Opts;
+ };
+} // NIPREG