diff options
author | dgolear <dgolear@yandex-team.com> | 2024-09-10 10:03:27 +0300 |
---|---|---|
committer | dgolear <dgolear@yandex-team.com> | 2024-09-10 10:16:22 +0300 |
commit | a566c0486ab3f100d786309858378c64c94e7ded (patch) | |
tree | 7d39cc91d4d964d360e1863cfdc9f4cabc1a6a81 | |
parent | e64a238636c4c49722fee79e2e75e52a4cb1a882 (diff) | |
download | ydb-a566c0486ab3f100d786309858378c64c94e7ded.tar.gz |
YT: Support FromProto/ToProto for google::protobuf::Duration and Timestamp
76ee818b551cc7e9f98554a4c6e06f9913f47d52
-rw-r--r-- | yt/yt/core/misc/protobuf_helpers-inl.h | 24 | ||||
-rw-r--r-- | yt/yt/core/misc/protobuf_helpers.h | 10 |
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> |