aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgolear <dgolear@yandex-team.com>2024-09-10 10:03:27 +0300
committerdgolear <dgolear@yandex-team.com>2024-09-10 10:16:22 +0300
commita566c0486ab3f100d786309858378c64c94e7ded (patch)
tree7d39cc91d4d964d360e1863cfdc9f4cabc1a6a81
parente64a238636c4c49722fee79e2e75e52a4cb1a882 (diff)
downloadydb-a566c0486ab3f100d786309858378c64c94e7ded.tar.gz
YT: Support FromProto/ToProto for google::protobuf::Duration and Timestamp
76ee818b551cc7e9f98554a4c6e06f9913f47d52
-rw-r--r--yt/yt/core/misc/protobuf_helpers-inl.h24
-rw-r--r--yt/yt/core/misc/protobuf_helpers.h10
2 files changed, 30 insertions, 4 deletions
diff --git a/yt/yt/core/misc/protobuf_helpers-inl.h b/yt/yt/core/misc/protobuf_helpers-inl.h
index adf5a30851..8580583ccb 100644
--- a/yt/yt/core/misc/protobuf_helpers-inl.h
+++ b/yt/yt/core/misc/protobuf_helpers-inl.h
@@ -6,6 +6,8 @@
#include "error.h"
+#include <library/cpp/protobuf/interop/cast.h>
+
#include <library/cpp/yt/assert/assert.h>
namespace NYT {
@@ -128,6 +130,16 @@ inline void FromProto(TDuration* original, ::google::protobuf::int64 serialized)
*original = TDuration::MicroSeconds(serialized);
}
+inline void ToProto(::google::protobuf::Duration* serialized, TDuration original)
+{
+ *serialized = NProtoInterop::CastToProto(original);
+}
+
+inline void FromProto(TDuration* original, ::google::protobuf::Duration serialized)
+{
+ *original = NProtoInterop::CastFromProto(serialized);
+}
+
////////////////////////////////////////////////////////////////////////////////
inline void ToProto(::google::protobuf::int64* serialized, TInstant original)
@@ -140,8 +152,6 @@ inline void FromProto(TInstant* original, ::google::protobuf::int64 serialized)
*original = TInstant::MicroSeconds(serialized);
}
-////////////////////////////////////////////////////////////////////////////////
-
inline void ToProto(::google::protobuf::uint64* serialized, TInstant original)
{
*serialized = original.MicroSeconds();
@@ -152,6 +162,16 @@ inline void FromProto(TInstant* original, ::google::protobuf::uint64 serialized)
*original = TInstant::MicroSeconds(serialized);
}
+inline void ToProto(::google::protobuf::Timestamp* serialized, TInstant original)
+{
+ *serialized = NProtoInterop::CastToProto(original);
+}
+
+inline void FromProto(TInstant* original, ::google::protobuf::Timestamp serialized)
+{
+ *original = NProtoInterop::CastFromProto(serialized);
+}
+
////////////////////////////////////////////////////////////////////////////////
template <class T>
diff --git a/yt/yt/core/misc/protobuf_helpers.h b/yt/yt/core/misc/protobuf_helpers.h
index d9ec6b1bc0..4188b3a501 100644
--- a/yt/yt/core/misc/protobuf_helpers.h
+++ b/yt/yt/core/misc/protobuf_helpers.h
@@ -16,8 +16,10 @@
#include <library/cpp/yt/misc/optional.h>
#include <library/cpp/yt/misc/preprocessor.h>
+#include <google/protobuf/duration.pb.h>
#include <google/protobuf/message.h>
#include <google/protobuf/repeated_field.h>
+#include <google/protobuf/timestamp.pb.h>
#include <google/protobuf/io/zero_copy_stream_impl_lite.h>
@@ -28,16 +30,20 @@ namespace NYT {
inline void ToProto(::google::protobuf::int64* serialized, TDuration original);
inline void FromProto(TDuration* original, ::google::protobuf::int64 serialized);
+inline void ToProto(::google::protobuf::Duration* serialized, TDuration original);
+inline void FromProto(TDuration* original, ::google::protobuf::Duration serialized);
+
////////////////////////////////////////////////////////////////////////////////
inline void ToProto(::google::protobuf::int64* serialized, TInstant original);
inline void FromProto(TInstant* original, ::google::protobuf::int64 serialized);
-////////////////////////////////////////////////////////////////////////////////
-
inline void ToProto(::google::protobuf::uint64* serialized, TInstant original);
inline void FromProto(TInstant* original, ::google::protobuf::uint64 serialized);
+inline void ToProto(::google::protobuf::Timestamp* serialized, TInstant original);
+inline void FromProto(TInstant* original, ::google::protobuf::Timestamp serialized);
+
////////////////////////////////////////////////////////////////////////////////
template <class T>