Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: mojo/system/message_in_transit.cc

Issue 173333002: Mojo: Make MessageInTransit more opaque still. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « mojo/system/message_in_transit.h ('k') | mojo/system/raw_channel_posix.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "mojo/system/message_in_transit.h" 5 #include "mojo/system/message_in_transit.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <new> 9 #include <new>
10 10
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 kMessageAlignment)); 70 kMessageAlignment));
71 memcpy(buffer, main_buffer(), buffer_size); 71 memcpy(buffer, main_buffer(), buffer_size);
72 return reinterpret_cast<MessageInTransit*>(buffer); 72 return reinterpret_cast<MessageInTransit*>(buffer);
73 } 73 }
74 74
75 void MessageInTransit::Destroy() { 75 void MessageInTransit::Destroy() {
76 // No need to call the destructor, since we're POD. 76 // No need to call the destructor, since we're POD.
77 base::AlignedFree(this); 77 base::AlignedFree(this);
78 } 78 }
79 79
80 // static
81 bool MessageInTransit::GetNextMessageSize(const void* buffer,
82 size_t buffer_size,
83 size_t* next_message_size) {
84 DCHECK(buffer);
85 DCHECK_EQ(reinterpret_cast<uintptr_t>(buffer) %
86 MessageInTransit::kMessageAlignment, 0u);
87 DCHECK(next_message_size);
88
89 if (buffer_size < sizeof(Header))
90 return false;
91
92 const Header* header = static_cast<const Header*>(buffer);
93 *next_message_size =
94 RoundUpMessageAlignment(sizeof(MessageInTransit) + header->data_size);
95 return true;
96 }
97
98 // static
99 const MessageInTransit* MessageInTransit::CreateReadOnlyFromBuffer(
100 const void* buffer) {
101 DCHECK(buffer);
102 DCHECK_EQ(reinterpret_cast<uintptr_t>(buffer) %
103 MessageInTransit::kMessageAlignment, 0u);
104 return static_cast<const MessageInTransit*>(buffer);
105 }
106
80 MessageInTransit::MessageInTransit(uint32_t data_size, 107 MessageInTransit::MessageInTransit(uint32_t data_size,
81 Type type, 108 Type type,
82 Subtype subtype, 109 Subtype subtype,
83 uint32_t num_bytes, 110 uint32_t num_bytes,
84 uint32_t num_handles) 111 uint32_t num_handles)
85 : header_(data_size, type, subtype, kInvalidEndpointId, kInvalidEndpointId, 112 : header_(data_size, type, subtype, kInvalidEndpointId, kInvalidEndpointId,
86 num_bytes, num_handles) { 113 num_bytes, num_handles) {
87 DCHECK_GE(header()->data_size, header()->num_bytes); 114 DCHECK_GE(header()->data_size, header()->num_bytes);
88 } 115 }
89 116
90 } // namespace system 117 } // namespace system
91 } // namespace mojo 118 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/system/message_in_transit.h ('k') | mojo/system/raw_channel_posix.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698