Skip to content

Commit a566c04

Browse files
author
dgolear
committed
YT: Support FromProto/ToProto for google::protobuf::Duration and Timestamp
76ee818b551cc7e9f98554a4c6e06f9913f47d52
1 parent e64a238 commit a566c04

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

yt/yt/core/misc/protobuf_helpers-inl.h

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
#include "error.h"
88

9+
#include <library/cpp/protobuf/interop/cast.h>
10+
911
#include <library/cpp/yt/assert/assert.h>
1012

1113
namespace NYT {
@@ -128,6 +130,16 @@ inline void FromProto(TDuration* original, ::google::protobuf::int64 serialized)
128130
*original = TDuration::MicroSeconds(serialized);
129131
}
130132

133+
inline void ToProto(::google::protobuf::Duration* serialized, TDuration original)
134+
{
135+
*serialized = NProtoInterop::CastToProto(original);
136+
}
137+
138+
inline void FromProto(TDuration* original, ::google::protobuf::Duration serialized)
139+
{
140+
*original = NProtoInterop::CastFromProto(serialized);
141+
}
142+
131143
////////////////////////////////////////////////////////////////////////////////
132144

133145
inline void ToProto(::google::protobuf::int64* serialized, TInstant original)
@@ -140,8 +152,6 @@ inline void FromProto(TInstant* original, ::google::protobuf::int64 serialized)
140152
*original = TInstant::MicroSeconds(serialized);
141153
}
142154

143-
////////////////////////////////////////////////////////////////////////////////
144-
145155
inline void ToProto(::google::protobuf::uint64* serialized, TInstant original)
146156
{
147157
*serialized = original.MicroSeconds();
@@ -152,6 +162,16 @@ inline void FromProto(TInstant* original, ::google::protobuf::uint64 serialized)
152162
*original = TInstant::MicroSeconds(serialized);
153163
}
154164

165+
inline void ToProto(::google::protobuf::Timestamp* serialized, TInstant original)
166+
{
167+
*serialized = NProtoInterop::CastToProto(original);
168+
}
169+
170+
inline void FromProto(TInstant* original, ::google::protobuf::Timestamp serialized)
171+
{
172+
*original = NProtoInterop::CastFromProto(serialized);
173+
}
174+
155175
////////////////////////////////////////////////////////////////////////////////
156176

157177
template <class T>

yt/yt/core/misc/protobuf_helpers.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@
1616
#include <library/cpp/yt/misc/optional.h>
1717
#include <library/cpp/yt/misc/preprocessor.h>
1818

19+
#include <google/protobuf/duration.pb.h>
1920
#include <google/protobuf/message.h>
2021
#include <google/protobuf/repeated_field.h>
22+
#include <google/protobuf/timestamp.pb.h>
2123

2224
#include <google/protobuf/io/zero_copy_stream_impl_lite.h>
2325

@@ -28,16 +30,20 @@ namespace NYT {
2830
inline void ToProto(::google::protobuf::int64* serialized, TDuration original);
2931
inline void FromProto(TDuration* original, ::google::protobuf::int64 serialized);
3032

33+
inline void ToProto(::google::protobuf::Duration* serialized, TDuration original);
34+
inline void FromProto(TDuration* original, ::google::protobuf::Duration serialized);
35+
3136
////////////////////////////////////////////////////////////////////////////////
3237

3338
inline void ToProto(::google::protobuf::int64* serialized, TInstant original);
3439
inline void FromProto(TInstant* original, ::google::protobuf::int64 serialized);
3540

36-
////////////////////////////////////////////////////////////////////////////////
37-
3841
inline void ToProto(::google::protobuf::uint64* serialized, TInstant original);
3942
inline void FromProto(TInstant* original, ::google::protobuf::uint64 serialized);
4043

44+
inline void ToProto(::google::protobuf::Timestamp* serialized, TInstant original);
45+
inline void FromProto(TInstant* original, ::google::protobuf::Timestamp serialized);
46+
4147
////////////////////////////////////////////////////////////////////////////////
4248

4349
template <class T>

0 commit comments

Comments
 (0)