aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/xdelta3/state/state.h
diff options
context:
space:
mode:
authorqrort <qrort@yandex-team.com>2022-11-30 23:47:12 +0300
committerqrort <qrort@yandex-team.com>2022-11-30 23:47:12 +0300
commit22f8ae0e3f5d68b92aecccdf96c1d841a0334311 (patch)
treebffa27765faf54126ad44bcafa89fadecb7a73d7 /library/cpp/xdelta3/state/state.h
parent332b99e2173f0425444abb759eebcb2fafaa9209 (diff)
downloadydb-22f8ae0e3f5d68b92aecccdf96c1d841a0334311.tar.gz
validate canons without yatest_common
Diffstat (limited to 'library/cpp/xdelta3/state/state.h')
-rw-r--r--library/cpp/xdelta3/state/state.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/library/cpp/xdelta3/state/state.h b/library/cpp/xdelta3/state/state.h
new file mode 100644
index 00000000000..297824952a2
--- /dev/null
+++ b/library/cpp/xdelta3/state/state.h
@@ -0,0 +1,37 @@
+#pragma once
+
+#include <library/cpp/xdelta3/proto/state_header.pb.h>
+
+#include <google/protobuf/arena.h>
+
+namespace NXdeltaAggregateColumn {
+
+ constexpr auto ArenaMaxSize = 65525;
+
+ class TState {
+ public:
+ TState(NProtoBuf::Arena& arena, const ui8* data, size_t size);
+
+ const NXdeltaAggregateColumn::TStateHeader& Header() const
+ {
+ return *HeaderPtr;
+ }
+
+ const ui8* PayloadData() const
+ {
+ return Data;
+ }
+
+ size_t PayloadSize() const;
+ TStateHeader::EErrorCode Error() const;
+ TStateHeader::EType Type() const;
+
+ ui32 CalcHash() const;
+
+ private:
+ const ui8* Data = nullptr;
+ TStateHeader* HeaderPtr = nullptr;
+ };
+
+ size_t SizeOfHeader(const TStateHeader& header);
+}