3#include <userver/proto-structs/io/fwd.hpp>
4#include <userver/proto-structs/io/supported_types.hpp>
5#include <userver/proto-structs/type_mapping.hpp>
10class ConversionFailure;
25enum class ConversionFailureType { kUnspecified = 0, kException = 1, kError = 2, kErrorWithUnknownField = 3 };
28 ConversionFailureType error_type = {};
33namespace proto_structs::traits {
36struct CompatibleMessageTrait<::structs::ConversionFailure> {
37 using Type = ::messages::ConversionFailure;
44enum class TestEnum { kUnspecified = 0, kValue1 = 1, kValue2 = 2 };
47 using ProtobufMessage = messages::Scalar;
63 using ProtobufMessage = messages::WellKnownStd;
65 std::chrono::time_point<std::chrono::system_clock> f1 = {};
66 std::chrono::milliseconds f2 = {};
67 std::chrono::year_month_day f3 = {};
68 std::chrono::hh_mm_ss<std::chrono::microseconds> f4 = {};
72 using ProtobufMessage = messages::WellKnownUsrv;
75 ups::Timestamp f2 = {};
76 ups::Duration f3 = {};
78 ups::TimeOfDay f5 = {};
79 USERVER_NAMESPACE::utils::datetime::TimeOfDay<std::chrono::microseconds> f6 = {};
80 USERVER_NAMESPACE::decimal64::Decimal<3> f7 = {};
84 using ProtobufMessage = messages::Optional;
86 std::optional<int32_t> f1 = {};
87 std::optional<std::string> f2 = {};
88 std::optional<TestEnum> f3 = {};
89 std::optional<
Simple> f4 = {};
93 using ProtobufMessage = messages::Repeated;
95 std::vector<int32_t> f1 = {};
96 std::vector<std::string> f2 = {};
97 std::vector<TestEnum> f3 = {};
98 std::vector<Simple> f4 = {};
102 using ProtobufMessage = messages::Map;
104 std::map<int32_t, int32_t> f1 = {};
105 std::unordered_map<std::string, std::string> f2 = {};
106 std::map<
bool, TestEnum> f3 = {};
107 std::unordered_map<std::string, Simple, USERVER_NAMESPACE::utils::StrCaseHash> f4 = {};
111 using ProtobufMessage = messages::Oneof;
114 Type test_oneof = {};
118 using ProtobufMessage = messages::Indirect;
120 template <
typename T>
126 std::optional<Box<ups::Duration>> f2 = {};
127 std::vector<Box<Simple>> f3 = {};
128 std::map<int32_t, Box<Simple>> f4 = {};
129 OneofType test_oneof = {};
130 Box<int32_t> f7 = {};
131 Box<std::vector<Box<TestEnum>>> f8 = {};
132 Box<std::map<std::string, Box<Simple>>> f9 = {};
138 using ProtobufMessage = messages::Strong;
147 std::optional<F2Strong> f2 = {};
148 std::vector<F3Strong> f3 = {};
149 std::map<int32_t, F4Strong> f4 = {};
150 OneofType test_oneof = {};
154 using ProtobufMessage = messages::Erroneous;
158 std::vector<ConversionFailure> f2 = {};
159 std::unordered_map<int32_t, ConversionFailure> f3 = {};
160 OneofType test_oneof = {};
164ReadProtoStruct(ups::io::ReadContext&, ups::io::To<ConversionFailure>,
const messages::ConversionFailure&);
165void WriteProtoStruct(ups::io::WriteContext& ctx,
const ConversionFailure&, messages::ConversionFailure&);
167Scalar ReadProtoStruct(ups::io::ReadContext&, ups::io::To<Scalar>,
const messages::Scalar&);
168void WriteProtoStruct(ups::io::WriteContext&,
const Scalar&, messages::Scalar&);
169void WriteProtoStruct(ups::io::WriteContext&,
Scalar&&, messages::Scalar&);
171WellKnownStd ReadProtoStruct(ups::io::ReadContext&, ups::io::To<WellKnownStd>,
const messages::WellKnownStd&);
172void WriteProtoStruct(ups::io::WriteContext&,
const WellKnownStd&, messages::WellKnownStd&);
173void WriteProtoStruct(ups::io::WriteContext&,
WellKnownStd&&, messages::WellKnownStd&);
175WellKnownUsrv ReadProtoStruct(ups::io::ReadContext&, ups::io::To<WellKnownUsrv>,
const messages::WellKnownUsrv&);
176void WriteProtoStruct(ups::io::WriteContext&,
const WellKnownUsrv&, messages::WellKnownUsrv&);
177void WriteProtoStruct(ups::io::WriteContext&,
WellKnownUsrv&&, messages::WellKnownUsrv&);
179Optional ReadProtoStruct(ups::io::ReadContext&, ups::io::To<Optional>,
const messages::Optional&);
180void WriteProtoStruct(ups::io::WriteContext&,
const Optional&, messages::Optional&);
181void WriteProtoStruct(ups::io::WriteContext&,
Optional&&, messages::Optional&);
183Repeated ReadProtoStruct(ups::io::ReadContext&, ups::io::To<Repeated>,
const messages::Repeated&);
184void WriteProtoStruct(ups::io::WriteContext&,
const Repeated&, messages::Repeated&);
185void WriteProtoStruct(ups::io::WriteContext&,
Repeated&&, messages::Repeated&);
187Map ReadProtoStruct(ups::io::ReadContext&, ups::io::To<Map>,
const messages::Map&);
188void WriteProtoStruct(ups::io::WriteContext&,
const Map&, messages::Map&);
189void WriteProtoStruct(ups::io::WriteContext&,
Map&&, messages::Map&);
191Oneof ReadProtoStruct(ups::io::ReadContext&, ups::io::To<Oneof>,
const messages::Oneof&);
192void WriteProtoStruct(ups::io::WriteContext&,
const Oneof&, messages::Oneof&);
193void WriteProtoStruct(ups::io::WriteContext&,
Oneof&&, messages::Oneof&);
195Indirect ReadProtoStruct(ups::io::ReadContext&, ups::io::To<Indirect>,
const messages::Indirect&);
196void WriteProtoStruct(ups::io::WriteContext&,
const Indirect&, messages::Indirect&);
197void WriteProtoStruct(ups::io::WriteContext&,
Indirect&&, messages::Indirect&);
199Strong ReadProtoStruct(ups::io::ReadContext&, ups::io::To<Strong>,
const messages::Strong&);
200void WriteProtoStruct(ups::io::WriteContext&,
const Strong&, messages::Strong&);
201void WriteProtoStruct(ups::io::WriteContext&,
Strong&&, messages::Strong&);
203Erroneous ReadProtoStruct(ups::io::ReadContext&, ups::io::To<Erroneous>,
const messages::Erroneous&);
204void WriteProtoStruct(ups::io::WriteContext&,
const Erroneous&, messages::Erroneous&);
206void CheckScalarEqual(
const Scalar&,
const messages::Scalar&);
207void CheckWellKnownStdEqual(
const WellKnownStd&,
const messages::WellKnownStd&);
208void CheckWellKnownUsrvEqual(
const WellKnownUsrv&,
const messages::WellKnownUsrv&);
209void CheckOptionalEqual(
const Optional&,
const messages::Optional&);
210void CheckRepeatedEqual(
const Repeated&,
const messages::Repeated&);
211void CheckMapEqual(
const Map&,
const messages::Map&);
212void CheckOneofEqual(
const Oneof&,
const messages::Oneof&);
213void CheckIndirectEqual(
const Indirect&,
const messages::Indirect&);
214void CheckStrongEqual(
const Strong&,
const messages::Strong&);