diff options
author | viettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-26 01:39:07 +0000 |
---|---|---|
committer | viettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-26 01:39:07 +0000 |
commit | 1966fd19b25fc8ec99356a789bf9e3b5b7bab720 (patch) | |
tree | bd819e1056952de4be81e4d2969752570425b941 /mojo | |
parent | 5e4f4aaa06d425f7f3783bf233fe1792d4fcf3a1 (diff) | |
download | chromium_src-1966fd19b25fc8ec99356a789bf9e3b5b7bab720.zip chromium_src-1966fd19b25fc8ec99356a789bf9e3b5b7bab720.tar.gz chromium_src-1966fd19b25fc8ec99356a789bf9e3b5b7bab720.tar.bz2 |
Mojo: Replace MessageInTransit::Header's data_size with total_size.
R=yzshen@chromium.org
Review URL: https://codereview.chromium.org/180423003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@253324 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'mojo')
-rw-r--r-- | mojo/system/message_in_transit.cc | 9 | ||||
-rw-r--r-- | mojo/system/message_in_transit.h | 6 |
2 files changed, 10 insertions, 5 deletions
diff --git a/mojo/system/message_in_transit.cc b/mojo/system/message_in_transit.cc index 3b7f315..8ab1148 100644 --- a/mojo/system/message_in_transit.cc +++ b/mojo/system/message_in_transit.cc @@ -54,7 +54,10 @@ MessageInTransit::MessageInTransit(OwnedBuffer, DCHECK_LE(num_bytes, kMaxMessageNumBytes); DCHECK_LE(num_handles, kMaxMessageNumHandles); - header()->data_size = num_bytes; + // Note: If dispatchers are subsequently attached (in particular, if + // |num_handles| is nonzero), then |total_size| will have to be adjusted. + // TODO(vtl): Figure out where we should really set this. + header()->total_size = static_cast<uint32_t>(main_buffer_size_); header()->type = type; header()->subtype = subtype; header()->source_id = kInvalidEndpointId; @@ -138,8 +141,8 @@ bool MessageInTransit::GetNextMessageSize(const void* buffer, return false; const Header* header = static_cast<const Header*>(buffer); - *next_message_size = - RoundUpMessageAlignment(sizeof(Header) + header->data_size); + *next_message_size = header->total_size; + DCHECK_EQ(*next_message_size % kMessageAlignment, 0u); return true; } diff --git a/mojo/system/message_in_transit.h b/mojo/system/message_in_transit.h index eda0963..b3ac389 100644 --- a/mojo/system/message_in_transit.h +++ b/mojo/system/message_in_transit.h @@ -153,8 +153,10 @@ class MOJO_SYSTEM_IMPL_EXPORT MessageInTransit { // "Header" for the data. Must be a multiple of |kMessageAlignment| bytes in // size. Must be POD. struct Header { - // Total size of data following the "header". - uint32_t data_size; + // Total size of the message, including the header, the message data + // ("bytes") including padding (to make it a multiple of |kMessageAlignment| + // bytes), and serialized handle information (TODO(vtl)). + uint32_t total_size; Type type; Subtype subtype; EndpointId source_id; |