61 using ProtobufResponse = proto_structs::traits::CompatibleMessageType<StructsResponse>;
62 using ProtobufRequest = proto_structs::traits::CompatibleMessageType<StructsRequest>;
64 using ProtobufWriter = ugrpc::client::Writer<ProtobufRequest, ProtobufResponse>;
66 explicit Writer(ProtobufWriter&& writer) : writer_{std::move(writer)} {}
68 Writer(Writer&&) =
default;
69 Writer& operator=(Writer&&) =
default;
72 [[nodiscard]]
bool Write(
const StructsRequest& request) {
73 return writer_.Write(proto_structs::StructToMessage(request));
77 [[nodiscard]]
bool Write(StructsRequest&& request) {
78 return writer_.Write(proto_structs::StructToMessage(std::move(request)));
83 writer_.WriteAndCheck(proto_structs::StructToMessage(request));
88 writer_.WriteAndCheck(proto_structs::StructToMessage(std::move(request)));
92 StructsResponse
Finish() {
return writer_.Finish(); }
101 ProtobufWriter writer_;
106class ReaderWriter final {
108 using ProtobufResponse = proto_structs::traits::CompatibleMessageType<StructsResponse>;
109 using ProtobufRequest = proto_structs::traits::CompatibleMessageType<StructsRequest>;
111 using ProtobufReaderWriter = ugrpc::client::ReaderWriter<ProtobufRequest, ProtobufResponse>;
113 explicit ReaderWriter(ProtobufReaderWriter&& reader_writer) : reader_writer_{std::move(reader_writer)} {}
115 ReaderWriter(ReaderWriter&&) =
default;
116 ReaderWriter& operator=(ReaderWriter&&) =
default;
122 ProtobufResponse message;
123 if (reader_writer_.Read(message)) {
124 StructsResponse response;
125 proto_structs::MessageToStruct(message, response);
137 [[nodiscard]]
bool Write(
const StructsRequest& request) {
138 return reader_writer_.Write(proto_structs::StructToMessage(request));
144 [[nodiscard]]
bool Write(StructsRequest&& request) {
145 return reader_writer_.Write(proto_structs::StructToMessage(std::move(request)));
152 reader_writer_.WriteAndCheck(proto_structs::StructToMessage(request));
159 reader_writer_.WriteAndCheck(proto_structs::StructToMessage(std::move(request)));
165 [[nodiscard]]
bool WritesDone() {
return reader_writer_.WritesDone(); }
178 ProtobufReaderWriter reader_writer_;
179 utils::Box<ProtobufResponse> response_;