[Yunq] Add support for empty requests and responses.

This commit is contained in:
Drew Galbraith 2023-11-27 08:03:12 -08:00
parent 6d108f6965
commit cc4b5bd811
11 changed files with 91 additions and 22 deletions

View file

@ -8,7 +8,13 @@
{% for interface in interfaces %}
{% for method in interface.methods %}
{% if method.request == None %}
glcr::ErrorCode {{interface.name}}Client::{{method.name}}({{method.response}}& response) {
{% elif method.response == None %}
glcr::ErrorCode {{interface.name}}Client::{{method.name}}(const {{method.request}}& request) {
{% else %}
glcr::ErrorCode {{interface.name}}Client::{{method.name}}(const {{method.request}}& request, {{method.response}}& response) {
{% endif %}
uint64_t buffer_size = kBufferSize;
uint64_t cap_size = kCapBufferSize;
@ -17,7 +23,12 @@ glcr::ErrorCode {{interface.name}}Client::{{method.name}}(const {{method.request
buffer_.WriteAt<uint64_t>(8, {{loop.index0}});
cap_buffer_.Reset();
{% if method.request == None %}
uint64_t length = 0;
{% else %}
uint64_t length = request.SerializeToBytes(buffer_, /*offset=*/16, cap_buffer_);
{% endif %}
buffer_.WriteAt<uint32_t>(4, 16 + length);
z_cap_t reply_port_cap;
@ -33,7 +44,9 @@ glcr::ErrorCode {{interface.name}}Client::{{method.name}}(const {{method.request
// Check Response Code.
RET_ERR(buffer_.At<uint64_t>(8));
{% if method.response != None %}
response.ParseFromBytes(buffer_, 16, cap_buffer_);
{% endif %}
return glcr::OK;
}