[Yunq] Accept a message view on message parsing.

This commit is contained in:
Drew Galbraith 2024-01-11 20:03:34 -08:00
parent 75d84a0fa5
commit 0135d8d844
19 changed files with 94 additions and 107 deletions

View file

@ -56,7 +56,8 @@ glcr::Status {{interface.name}}Client::{{method.name}}(const {{method.request}}&
RET_ERR(buffer_.At<uint64_t>(8));
{% if method.response != None %}
RETURN_ERROR(response.ParseFromBytes(buffer_, 16, cap_buffer_));
yunq::MessageView resp_view(buffer_, 16);
RETURN_ERROR(response.ParseFromBytes(resp_view, cap_buffer_));
{% endif %}
return glcr::OK;

View file

@ -19,8 +19,7 @@ struct ExtPointer {
} // namespace
{%- for message in messages %}
glcr::Status {{message.name}}::ParseFromBytes(const glcr::ByteBuffer& bytes, uint64_t offset) {
yunq::MessageView message(bytes, offset);
glcr::Status {{message.name}}::ParseFromBytes(const yunq::MessageView& message) {
RETURN_ERROR(ParseFromBytesInternal(message));
{%- for field in message.fields %}
@ -37,8 +36,7 @@ glcr::Status {{message.name}}::ParseFromBytes(const glcr::ByteBuffer& bytes, uin
return glcr::Status::Ok();
}
glcr::Status {{message.name}}::ParseFromBytes(const glcr::ByteBuffer& bytes, uint64_t offset, const glcr::CapBuffer& caps) {
yunq::MessageView message(bytes, offset);
glcr::Status {{message.name}}::ParseFromBytes(const yunq::MessageView& message, const glcr::CapBuffer& caps) {
RETURN_ERROR(ParseFromBytesInternal(message));
{%- for field in message.fields %}

View file

@ -21,8 +21,8 @@ class {{message.name}} {
{{message.name}}(const {{message.name}}&) = delete;
{{message.name}}({{message.name}}&&) = delete;
[[nodiscard]] glcr::Status ParseFromBytes(const glcr::ByteBuffer&, uint64_t offset);
[[nodiscard]] glcr::Status ParseFromBytes(const glcr::ByteBuffer&, uint64_t offset, const glcr::CapBuffer&);
[[nodiscard]] glcr::Status ParseFromBytes(const yunq::MessageView& message);
[[nodiscard]] glcr::Status ParseFromBytes(const yunq::MessageView& message, const glcr::CapBuffer&);
uint64_t SerializeToBytes(glcr::ByteBuffer&, uint64_t offset) const;
uint64_t SerializeToBytes(glcr::ByteBuffer&, uint64_t offset, glcr::CapBuffer&) const;

View file

@ -107,7 +107,8 @@ glcr::Status {{interface.name}}ServerBase::HandleRequest(const glcr::ByteBuffer&
{% if method.request != None %}
{{method.request}} yunq_request;
RETURN_ERROR(yunq_request.ParseFromBytes(request, kHeaderSize, req_caps));
yunq::MessageView request_view(request, kHeaderSize);
RETURN_ERROR(yunq_request.ParseFromBytes(request_view, req_caps));
{% endif %}
{% if method.response != None %}