| Index: mojo/public/cpp/bindings/lib/message_builder.cc
|
| diff --git a/mojo/public/cpp/bindings/lib/message_builder.cc b/mojo/public/cpp/bindings/lib/message_builder.cc
|
| index 4ffa1808cc99f614753713eacf6e10b8b539abf4..6806a73213c6cbd0b184aad3a397832726525327 100644
|
| --- a/mojo/public/cpp/bindings/lib/message_builder.cc
|
| +++ b/mojo/public/cpp/bindings/lib/message_builder.cc
|
| @@ -4,11 +4,10 @@
|
|
|
| #include "mojo/public/cpp/bindings/lib/message_builder.h"
|
|
|
| -#include <stddef.h>
|
| -#include <stdint.h>
|
| -
|
| -#include "mojo/public/cpp/bindings/lib/serialization_util.h"
|
| -#include "mojo/public/cpp/bindings/message.h"
|
| +#include "mojo/public/cpp/bindings/lib/array_internal.h"
|
| +#include "mojo/public/cpp/bindings/lib/bindings_internal.h"
|
| +#include "mojo/public/cpp/bindings/lib/buffer.h"
|
| +#include "mojo/public/cpp/bindings/lib/message_internal.h"
|
|
|
| namespace mojo {
|
| namespace internal {
|
| @@ -19,38 +18,52 @@ void Allocate(Buffer* buf, Header** header) {
|
| (*header)->num_bytes = sizeof(Header);
|
| }
|
|
|
| -MessageBuilder::MessageBuilder(uint32_t name, size_t payload_size) {
|
| - InitializeMessage(sizeof(MessageHeader) + payload_size);
|
| +MessageBuilder::MessageBuilder(uint32_t name,
|
| + uint32_t flags,
|
| + size_t payload_size,
|
| + size_t payload_interface_id_count) {
|
| + if (payload_interface_id_count > 0) {
|
| + // Version 2
|
| + InitializeMessage(
|
| + sizeof(MessageHeaderV2) + Align(payload_size) +
|
| + ArrayDataTraits<uint32_t>::GetStorageSize(
|
| + static_cast<uint32_t>(payload_interface_id_count)));
|
| +
|
| + MessageHeaderV2* header;
|
| + Allocate(message_.buffer(), &header);
|
| + header->version = 2;
|
| + header->name = name;
|
| + header->flags = flags;
|
| + // The payload immediately follows the header.
|
| + header->payload.Set(header + 1);
|
| + } else if (flags &
|
| + (Message::kFlagExpectsResponse | Message::kFlagIsResponse)) {
|
| + // Version 1
|
| + InitializeMessage(sizeof(MessageHeaderV1) + payload_size);
|
| +
|
| + MessageHeaderV1* header;
|
| + Allocate(message_.buffer(), &header);
|
| + header->version = 1;
|
| + header->name = name;
|
| + header->flags = flags;
|
| + } else {
|
| + InitializeMessage(sizeof(MessageHeader) + payload_size);
|
|
|
| - MessageHeader* header;
|
| - Allocate(message_.buffer(), &header);
|
| - header->version = 0;
|
| - header->name = name;
|
| + MessageHeader* header;
|
| + Allocate(message_.buffer(), &header);
|
| + header->version = 0;
|
| + header->name = name;
|
| + header->flags = flags;
|
| + }
|
| }
|
|
|
| MessageBuilder::~MessageBuilder() {
|
| }
|
|
|
| -MessageBuilder::MessageBuilder() {}
|
| -
|
| void MessageBuilder::InitializeMessage(size_t size) {
|
| message_.Initialize(static_cast<uint32_t>(Align(size)),
|
| true /* zero_initialized */);
|
| }
|
|
|
| -MessageWithRequestIDBuilder::MessageWithRequestIDBuilder(uint32_t name,
|
| - size_t payload_size,
|
| - uint32_t flags,
|
| - uint64_t request_id) {
|
| - InitializeMessage(sizeof(MessageHeaderWithRequestID) + payload_size);
|
| -
|
| - MessageHeaderWithRequestID* header;
|
| - Allocate(message_.buffer(), &header);
|
| - header->version = 1;
|
| - header->name = name;
|
| - header->flags = flags;
|
| - header->request_id = request_id;
|
| -}
|
| -
|
| } // namespace internal
|
| } // namespace mojo
|
|
|