|  | // Copyright 2018 The Fuchsia Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include <lib/fidl/cpp/message_builder.h> | 
|  | #include <stdio.h> | 
|  | #include <stdlib.h> | 
|  |  | 
|  | namespace fidl { | 
|  |  | 
|  | MessageBuilder::MessageBuilder(const fidl_type_t* type, uint32_t bytes_capacity, | 
|  | uint32_t handles_capacity) | 
|  | : type_(type), buffer_(bytes_capacity, handles_capacity) { | 
|  | Reset(); | 
|  | } | 
|  |  | 
|  | MessageBuilder::~MessageBuilder() = default; | 
|  |  | 
|  | zx_status_t MessageBuilder::Encode(HLCPPOutgoingMessage* message_out, const char** error_msg_out) { | 
|  | *message_out = HLCPPOutgoingMessage( | 
|  | Finalize(), HandleDispositionPart(buffer_.handles(), buffer_.handles_capacity())); | 
|  | return message_out->Encode(type_, error_msg_out); | 
|  | } | 
|  |  | 
|  | void MessageBuilder::Reset() { | 
|  | Builder::Reset(buffer_.bytes(), buffer_.bytes_capacity()); | 
|  | New<fidl_message_header_t>(); | 
|  | } | 
|  |  | 
|  | }  // namespace fidl |