diff options
author | gritukan <gritukan@yandex-team.com> | 2023-08-07 19:35:14 +0300 |
---|---|---|
committer | gritukan <gritukan@yandex-team.com> | 2023-08-07 21:40:00 +0300 |
commit | 2a7d26c691d3f5c8f056443dd190679bcc293f84 (patch) | |
tree | 83b79f1c14834a1c754fecee032eebabe88fba91 | |
parent | 866f851bde92571470f8571508374e927e3b58c8 (diff) | |
download | ydb-2a7d26c691d3f5c8f056443dd190679bcc293f84.tar.gz |
YT-19686: Introduce efficient proto conversions for TStringBuf
-rw-r--r-- | yt/yt/core/misc/protobuf_helpers-inl.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/yt/yt/core/misc/protobuf_helpers-inl.h b/yt/yt/core/misc/protobuf_helpers-inl.h index 22c90e4ed5..93b4b362e7 100644 --- a/yt/yt/core/misc/protobuf_helpers-inl.h +++ b/yt/yt/core/misc/protobuf_helpers-inl.h @@ -65,6 +65,33 @@ inline void FromProto(TString* original, std::string serialized) //////////////////////////////////////////////////////////////////////////////// +// These conversions work in case if the patched protobuf that uses +// TString is used. +inline void ToProto(TString* serialized, TStringBuf original) +{ + *serialized = original; +} + +inline void FromProto(TStringBuf* original, const TString& serialized) +{ + *original = serialized; +} + +// These conversions work in case if the original protobuf that uses +// std::string is used. +inline void ToProto(std::string* serialized, TStringBuf original) +{ + serialized->resize(original.size()); + memcpy(serialized->data(), original.data(), original.size()); +} + +inline void FromProto(TStringBuf* original, const std::string& serialized) +{ + *original = serialized; +} + +//////////////////////////////////////////////////////////////////////////////// + inline void ToProto(::google::protobuf::int64* serialized, TDuration original) { *serialized = original.MicroSeconds(); |