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;
26enum class ConversionFailureType { kUnspecified = 0, kException = 1, kError = 2, kErrorWithUnknownField = 3 };
29 ConversionFailureType error_type = {};
34namespace proto_structs::traits {
37struct CompatibleMessageTrait<::structs::ConversionFailure> {
38 using Type = ::messages::ConversionFailure;
45enum class TestEnum { kUnspecified = 0, kValue1 = 1, kValue2 = 2 };
48 using ProtobufMessage = messages::Scalar;
64 using ProtobufMessage = messages::WellKnownStd;
66 std::chrono::time_point<std::chrono::system_clock> f1 = {};
67 std::chrono::milliseconds f2 = {};
68 std::chrono::year_month_day f3 = {};
69 std::chrono::hh_mm_ss<std::chrono::microseconds> f4 = {};
73 using ProtobufMessage = messages::WellKnownUsrv;
76 ups::Timestamp f2 = {};
77 ups::Duration f3 = {};
79 ups::TimeOfDay f5 = {};
80 USERVER_NAMESPACE::utils::datetime::TimeOfDay<std::chrono::microseconds> f6 = {};
81 USERVER_NAMESPACE::decimal64::Decimal<3> f7 = {};
85 using ProtobufMessage = messages::WellKnownJson;
87 formats::json::Value f1 = {};
88 formats::json::Array f2 = {};
89 formats::json::Object f3 = {};
93 using ProtobufMessage = messages::Optional;
95 std::optional<int32_t> f1 = {};
96 std::optional<std::string> f2 = {};
97 std::optional<TestEnum> f3 = {};
98 std::optional<
Simple> f4 = {};
102 using ProtobufMessage = messages::Repeated;
104 std::vector<int32_t> f1 = {};
105 std::vector<std::string> f2 = {};
106 std::vector<TestEnum> f3 = {};
107 std::vector<Simple> f4 = {};
111 using ProtobufMessage = messages::Map;
113 std::map<int32_t, int32_t> f1 = {};
114 std::unordered_map<std::string, std::string> f2 = {};
115 std::map<
bool, TestEnum> f3 = {};
116 std::unordered_map<std::string, Simple, USERVER_NAMESPACE::utils::StrCaseHash> f4 = {};
120 using ProtobufMessage = messages::Oneof;
123 Type test_oneof = {};
127 using ProtobufMessage = messages::Indirect;
129 template <
typename T>
135 std::optional<Box<ups::Duration>> f2 = {};
136 std::vector<Box<Simple>> f3 = {};
137 std::map<int32_t, Box<Simple>> f4 = {};
138 OneofType test_oneof = {};
139 Box<int32_t> f7 = {};
140 Box<std::vector<Box<TestEnum>>> f8 = {};
141 Box<std::map<std::string, Box<Simple>>> f9 = {};
147 using ProtobufMessage = messages::Strong;
156 std::optional<F2Strong> f2 = {};
157 std::vector<F3Strong> f3 = {};
158 std::map<int32_t, F4Strong> f4 = {};
159 OneofType test_oneof = {};
163 using ProtobufMessage = messages::Erroneous;
167 std::vector<ConversionFailure> f2 = {};
168 std::unordered_map<int32_t, ConversionFailure> f3 = {};
169 OneofType test_oneof = {};
173ReadProtoStruct(ups::io::ReadContext&, ups::io::To<ConversionFailure>,
const messages::ConversionFailure&);
174void WriteProtoStruct(ups::io::WriteContext& ctx,
const ConversionFailure&, messages::ConversionFailure&);
176Scalar ReadProtoStruct(ups::io::ReadContext&, ups::io::To<Scalar>,
const messages::Scalar&);
177void WriteProtoStruct(ups::io::WriteContext&,
const Scalar&, messages::Scalar&);
178void WriteProtoStruct(ups::io::WriteContext&,
Scalar&&, messages::Scalar&);
180WellKnownStd ReadProtoStruct(ups::io::ReadContext&, ups::io::To<WellKnownStd>,
const messages::WellKnownStd&);
181void WriteProtoStruct(ups::io::WriteContext&,
const WellKnownStd&, messages::WellKnownStd&);
182void WriteProtoStruct(ups::io::WriteContext&,
WellKnownStd&&, messages::WellKnownStd&);
184WellKnownUsrv ReadProtoStruct(ups::io::ReadContext&, ups::io::To<WellKnownUsrv>,
const messages::WellKnownUsrv&);
185void WriteProtoStruct(ups::io::WriteContext&,
const WellKnownUsrv&, messages::WellKnownUsrv&);
186void WriteProtoStruct(ups::io::WriteContext&,
WellKnownUsrv&&, messages::WellKnownUsrv&);
188WellKnownJson ReadProtoStruct(ups::io::ReadContext&, ups::io::To<WellKnownJson>,
const messages::WellKnownJson&);
189void WriteProtoStruct(ups::io::WriteContext&,
const WellKnownJson&, messages::WellKnownJson&);
190void WriteProtoStruct(ups::io::WriteContext&,
WellKnownJson&&, messages::WellKnownJson&);
192Optional ReadProtoStruct(ups::io::ReadContext&, ups::io::To<Optional>,
const messages::Optional&);
193void WriteProtoStruct(ups::io::WriteContext&,
const Optional&, messages::Optional&);
194void WriteProtoStruct(ups::io::WriteContext&,
Optional&&, messages::Optional&);
196Repeated ReadProtoStruct(ups::io::ReadContext&, ups::io::To<Repeated>,
const messages::Repeated&);
197void WriteProtoStruct(ups::io::WriteContext&,
const Repeated&, messages::Repeated&);
198void WriteProtoStruct(ups::io::WriteContext&,
Repeated&&, messages::Repeated&);
200Map ReadProtoStruct(ups::io::ReadContext&, ups::io::To<Map>,
const messages::Map&);
201void WriteProtoStruct(ups::io::WriteContext&,
const Map&, messages::Map&);
202void WriteProtoStruct(ups::io::WriteContext&,
Map&&, messages::Map&);
204Oneof ReadProtoStruct(ups::io::ReadContext&, ups::io::To<Oneof>,
const messages::Oneof&);
205void WriteProtoStruct(ups::io::WriteContext&,
const Oneof&, messages::Oneof&);
206void WriteProtoStruct(ups::io::WriteContext&,
Oneof&&, messages::Oneof&);
208Indirect ReadProtoStruct(ups::io::ReadContext&, ups::io::To<Indirect>,
const messages::Indirect&);
209void WriteProtoStruct(ups::io::WriteContext&,
const Indirect&, messages::Indirect&);
210void WriteProtoStruct(ups::io::WriteContext&,
Indirect&&, messages::Indirect&);
212Strong ReadProtoStruct(ups::io::ReadContext&, ups::io::To<Strong>,
const messages::Strong&);
213void WriteProtoStruct(ups::io::WriteContext&,
const Strong&, messages::Strong&);
214void WriteProtoStruct(ups::io::WriteContext&,
Strong&&, messages::Strong&);
216Erroneous ReadProtoStruct(ups::io::ReadContext&, ups::io::To<Erroneous>,
const messages::Erroneous&);
217void WriteProtoStruct(ups::io::WriteContext&,
const Erroneous&, messages::Erroneous&);
219void CheckScalarEqual(
const Scalar&,
const messages::Scalar&);
220void CheckWellKnownStdEqual(
const WellKnownStd&,
const messages::WellKnownStd&);
221void CheckWellKnownUsrvEqual(
const WellKnownUsrv&,
const messages::WellKnownUsrv&);
222void CheckWellKnownJsonEqual(
const WellKnownJson&,
const messages::WellKnownJson&);
223void CheckOptionalEqual(
const Optional&,
const messages::Optional&);
224void CheckRepeatedEqual(
const Repeated&,
const messages::Repeated&);
225void CheckMapEqual(
const Map&,
const messages::Map&);
226void CheckOneofEqual(
const Oneof&,
const messages::Oneof&);
227void CheckIndirectEqual(
const Indirect&,
const messages::Indirect&);
228void CheckStrongEqual(
const Strong&,
const messages::Strong&);