summaryrefslogtreecommitdiffstats
path: root/mojo
diff options
context:
space:
mode:
authorviettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-26 01:39:07 +0000
committerviettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-26 01:39:07 +0000
commit1966fd19b25fc8ec99356a789bf9e3b5b7bab720 (patch)
treebd819e1056952de4be81e4d2969752570425b941 /mojo
parent5e4f4aaa06d425f7f3783bf233fe1792d4fcf3a1 (diff)
downloadchromium_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.cc9
-rw-r--r--mojo/system/message_in_transit.h6
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;