Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef MOJO_SYSTEM_MESSAGE_IN_TRANSIT_H_ | 5 #ifndef MOJO_SYSTEM_MESSAGE_IN_TRANSIT_H_ |
| 6 #define MOJO_SYSTEM_MESSAGE_IN_TRANSIT_H_ | 6 #define MOJO_SYSTEM_MESSAGE_IN_TRANSIT_H_ |
| 7 | 7 |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 41 | 41 |
| 42 // Creates a |MessageInTransit| of the given |type| and |subtype|, with | 42 // Creates a |MessageInTransit| of the given |type| and |subtype|, with |
| 43 // message data given by |bytes|/|num_bytes|. | 43 // message data given by |bytes|/|num_bytes|. |
| 44 // TODO(vtl): Add ability to tack on handle information. | 44 // TODO(vtl): Add ability to tack on handle information. |
| 45 static MessageInTransit* Create(Type type, | 45 static MessageInTransit* Create(Type type, |
| 46 Subtype subtype, | 46 Subtype subtype, |
| 47 const void* bytes, | 47 const void* bytes, |
| 48 uint32_t num_bytes, | 48 uint32_t num_bytes, |
| 49 uint32_t num_handles); | 49 uint32_t num_handles); |
| 50 | 50 |
| 51 // Destroys a |MessageInTransit| created using |Create()|. | 51 MessageInTransit* Clone() const; |
| 52 | |
| 53 // Destroys a |MessageInTransit| created using |Create()| or |Clone()|. | |
| 52 void Destroy(); | 54 void Destroy(); |
| 53 | 55 |
| 56 const void* main_buffer() const { | |
|
yzshen1
2014/02/19 23:15:59
Please consider adding a comment about what is a m
viettrungluu
2014/02/19 23:23:36
Done.
| |
| 57 return static_cast<const void*>(this); | |
| 58 } | |
| 59 | |
| 60 size_t main_buffer_size() const { | |
| 61 return RoundUpMessageAlignment(sizeof(*this) + header()->data_size); | |
| 62 } | |
| 63 | |
| 54 // Gets the size of the data (in number of bytes). This is the full size of | 64 // Gets the size of the data (in number of bytes). This is the full size of |
| 55 // the data that follows the header, and may include data other than the | 65 // the data that follows the header, and may include data other than the |
| 56 // message data. (See also |num_bytes()|.) | 66 // message data. (See also |num_bytes()|.) |
| 57 uint32_t data_size() const { | 67 uint32_t data_size() const { |
| 58 return header()->data_size; | 68 return header()->data_size; |
| 59 } | 69 } |
| 60 | 70 |
| 61 // Gets the data (of size |data_size()| bytes). | 71 // Gets the data (of size |data_size()| bytes). |
| 62 const void* data() const { | 72 const void* data() const { |
| 63 return reinterpret_cast<const char*>(this) + sizeof(*this); | 73 return reinterpret_cast<const char*>(this) + sizeof(*this); |
| 64 } | 74 } |
| 65 | 75 |
| 66 // Gets the size of the message data. | 76 // Gets the size of the message data. |
| 67 uint32_t num_bytes() const { | 77 uint32_t num_bytes() const { |
| 68 return header()->num_bytes; | 78 return header()->num_bytes; |
| 69 } | 79 } |
| 70 | 80 |
| 71 // Gets the message data (of size |num_bytes()| bytes). | 81 // Gets the message data (of size |num_bytes()| bytes). |
| 72 const void* bytes() const { | 82 const void* bytes() const { |
| 73 return reinterpret_cast<const char*>(this) + sizeof(*this); | 83 return reinterpret_cast<const char*>(this) + sizeof(*this); |
| 74 } | 84 } |
| 75 | 85 |
| 76 uint32_t num_handles() const { | 86 uint32_t num_handles() const { |
| 77 return header()->num_handles; | 87 return header()->num_handles; |
| 78 } | 88 } |
| 79 | 89 |
| 80 size_t size_with_header_and_padding() const { | |
| 81 return RoundUpMessageAlignment(sizeof(*this) + header()->data_size); | |
| 82 } | |
| 83 | |
| 84 Type type() const { return header()->type; } | 90 Type type() const { return header()->type; } |
| 85 Subtype subtype() const { return header()->subtype; } | 91 Subtype subtype() const { return header()->subtype; } |
| 86 EndpointId source_id() const { return header()->source_id; } | 92 EndpointId source_id() const { return header()->source_id; } |
| 87 EndpointId destination_id() const { return header()->destination_id; } | 93 EndpointId destination_id() const { return header()->destination_id; } |
| 88 | 94 |
| 89 void set_source_id(EndpointId source_id) { header()->source_id = source_id; } | 95 void set_source_id(EndpointId source_id) { header()->source_id = source_id; } |
| 90 void set_destination_id(EndpointId destination_id) { | 96 void set_destination_id(EndpointId destination_id) { |
| 91 header()->destination_id = destination_id; | 97 header()->destination_id = destination_id; |
| 92 } | 98 } |
| 93 | 99 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 144 | 150 |
| 145 // The size of |MessageInTransit| must be appropriate to maintain alignment of | 151 // The size of |MessageInTransit| must be appropriate to maintain alignment of |
| 146 // the following data. | 152 // the following data. |
| 147 COMPILE_ASSERT(sizeof(MessageInTransit) % MessageInTransit::kMessageAlignment == | 153 COMPILE_ASSERT(sizeof(MessageInTransit) % MessageInTransit::kMessageAlignment == |
| 148 0, MessageInTransit_has_wrong_size); | 154 0, MessageInTransit_has_wrong_size); |
| 149 | 155 |
| 150 } // namespace system | 156 } // namespace system |
| 151 } // namespace mojo | 157 } // namespace mojo |
| 152 | 158 |
| 153 #endif // MOJO_SYSTEM_MESSAGE_IN_TRANSIT_H_ | 159 #endif // MOJO_SYSTEM_MESSAGE_IN_TRANSIT_H_ |
| OLD | NEW |