63 using ProtobufResponse = proto_structs::traits::CompatibleMessageType<StructsResponse>;
64 using ProtobufRequest = proto_structs::traits::CompatibleMessageType<StructsRequest>;
66 using ProtobufWriter = ugrpc::client::Writer<ProtobufRequest, ProtobufResponse>;
68 explicit Writer(ProtobufWriter&& writer)
69 : writer_{std::move(writer)}
72 Writer(Writer&&) =
default;
73 Writer& operator=(Writer&&) =
default;
77 [[nodiscard]]
bool Write(StructsRequest&& request) {
78 return writer_.Write(proto_structs::StructToMessage(std::move(request)));
83 [[nodiscard]]
bool WriteCopy(
const StructsRequest& request) {
84 return writer_.Write(proto_structs::StructToMessage(request));
90 writer_.WriteAndCheck(proto_structs::StructToMessage(std::move(request)));
96 writer_.WriteAndCheck(proto_structs::StructToMessage(request));
100 StructsResponse
Finish() {
return proto_structs::MessageToStruct<StructsResponse>(writer_.Finish()); }
109 ProtobufWriter writer_;
114class ReaderWriter final {
116 using ProtobufResponse = proto_structs::traits::CompatibleMessageType<StructsResponse>;
117 using ProtobufRequest = proto_structs::traits::CompatibleMessageType<StructsRequest>;
119 using ProtobufReaderWriter = ugrpc::client::ReaderWriter<ProtobufRequest, ProtobufResponse>;
121 explicit ReaderWriter(ProtobufReaderWriter&& reader_writer)
122 : reader_writer_{std::move(reader_writer)}
125 ReaderWriter(ReaderWriter&&) =
default;
126 ReaderWriter& operator=(ReaderWriter&&) =
default;
132 ProtobufResponse message;
133 if (reader_writer_.Read(message)) {
134 StructsResponse response;
135 proto_structs::MessageToStruct(message, response);
147 [[nodiscard]]
bool Write(
const StructsRequest& request) {
148 return reader_writer_.Write(proto_structs::StructToMessage(request));
154 [[nodiscard]]
bool Write(StructsRequest&& request) {
155 return reader_writer_.Write(proto_structs::StructToMessage(std::move(request)));
162 reader_writer_.WriteAndCheck(proto_structs::StructToMessage(request));
169 reader_writer_.WriteAndCheck(proto_structs::StructToMessage(std::move(request)));
175 [[nodiscard]]
bool WritesDone() {
return reader_writer_.WritesDone(); }
188 ProtobufReaderWriter reader_writer_;
189 utils::Box<ProtobufResponse> response_;