blob: e7b493919ec3e5da3c0c4f921b4a8e8a1917de8c [file] [log] [blame]
Alexei Frolov4d2adde2020-08-04 10:19:24 -07001// Copyright 2020 The Pigweed Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License"); you may not
4// use this file except in compliance with the License. You may obtain a copy of
5// the License at
6//
7// https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12// License for the specific language governing permissions and limitations under
13// the License.
14
Wyatt Hepler8ec2cf82021-07-09 17:18:41 -070015#include "pw_rpc/nanopb/client_call.h"
Alexei Frolov4d2adde2020-08-04 10:19:24 -070016
17namespace pw::rpc {
18namespace internal {
19
20Status BaseNanopbClientCall::SendRequest(const void* request_struct) {
21 std::span<std::byte> buffer = AcquirePayloadBuffer();
22
Wyatt Hepler59b37f72021-06-15 16:23:44 -070023 StatusWithSize sws = serde_.EncodeRequest(request_struct, buffer);
Alexei Frolov4d2adde2020-08-04 10:19:24 -070024 if (!sws.ok()) {
25 ReleasePayloadBuffer({});
26 return sws.status();
27 }
28
29 return ReleasePayloadBuffer(buffer.first(sws.size()));
30}
31
32} // namespace internal
33} // namespace pw::rpc