1#include <userver/proto-structs/io/std/chrono/time_point.hpp>
3#include <google/protobuf/timestamp.pb.h>
5#include <userver/proto-structs/exceptions.hpp>
6#include <userver/proto-structs/io/context.hpp>
7#include <userver/proto-structs/timestamp.hpp>
8#include <userver/utils/impl/internal_tag.hpp>
10namespace proto_structs::io {
12std::chrono::time_point<std::chrono::system_clock> ReadProtoStruct(
14 To<std::chrono::time_point<std::chrono::system_clock>>,
15 const ::google::protobuf::Timestamp& msg
17 return Timestamp(utils::impl::InternalTag{}, msg.seconds(), msg.nanos()).ToTimePoint();
18}
catch (
const ValueError& e) {
19 ctx.AddError(e.what());
20 return std::chrono::time_point<std::chrono::system_clock>{};
25 const std::chrono::time_point<std::chrono::system_clock>& obj,
26 ::google::protobuf::Timestamp& msg
29 msg.set_seconds(ts.Seconds().count());
30 msg.set_nanos(
static_cast<std::int32_t>(ts.Nanos().count()));
31}
catch (
const ValueError& e) {
32 ctx.AddError(e.what());