OLD | NEW |
| (Empty) |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "mojo/public/cpp/bindings/lib/message_builder.h" | |
6 | |
7 #include "mojo/public/cpp/bindings/lib/bindings_serialization.h" | |
8 #include "mojo/public/cpp/bindings/message.h" | |
9 | |
10 namespace mojo { | |
11 namespace { | |
12 using internal::MessageHeader; | |
13 using internal::MessageHeaderWithRequestID; | |
14 | |
15 template <typename Header> | |
16 void Allocate(internal::Buffer* buf, Header** header) { | |
17 *header = static_cast<Header*>(buf->Allocate(sizeof(Header))); | |
18 (*header)->num_bytes = sizeof(Header); | |
19 } | |
20 | |
21 } // namespace | |
22 | |
23 namespace internal { | |
24 | |
25 MessageWithRequestIDBuilder::MessageWithRequestIDBuilder(uint32_t name, | |
26 size_t payload_size, | |
27 uint32_t flags, | |
28 uint64_t request_id) { | |
29 Initialize(sizeof(MessageHeaderWithRequestID) + payload_size); | |
30 MessageHeaderWithRequestID* header; | |
31 Allocate(&buf_, &header); | |
32 header->version = 1; | |
33 header->name = name; | |
34 header->flags = flags; | |
35 header->request_id = request_id; | |
36 } | |
37 | |
38 } // namespace internal | |
39 | |
40 MessageBuilder::MessageBuilder(uint32_t name, size_t payload_size) { | |
41 Initialize(sizeof(MessageHeader) + payload_size); | |
42 | |
43 MessageHeader* header; | |
44 Allocate(&buf_, &header); | |
45 header->version = 0; | |
46 header->name = name; | |
47 header->flags = 0; | |
48 } | |
49 | |
50 MessageBuilder::~MessageBuilder() { | |
51 } | |
52 | |
53 MessageBuilder::MessageBuilder() {} | |
54 | |
55 void MessageBuilder::Initialize(size_t size) { | |
56 message_.AllocData(static_cast<uint32_t>(internal::Align(size))); | |
57 buf_.Initialize(message_.mutable_data(), message_.data_num_bytes()); | |
58 } | |
59 | |
60 } // namespace mojo | |
OLD | NEW |