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

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

Issue 226203003: Mojo: Add the ability to attach PlatformHandles to MessageInTransits. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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 | « no previous file | mojo/system/message_in_transit.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 #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 <vector> 10 #include <vector>
11 11
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
14 #include "mojo/embedder/platform_handle.h"
14 #include "mojo/system/dispatcher.h" 15 #include "mojo/system/dispatcher.h"
15 #include "mojo/system/system_impl_export.h" 16 #include "mojo/system/system_impl_export.h"
16 17
17 namespace mojo { 18 namespace mojo {
18 namespace system { 19 namespace system {
19 20
20 class Channel; 21 class Channel;
21 22
22 // This class is used to represent data in transit. It is thread-unsafe. 23 // This class is used to represent data in transit. It is thread-unsafe.
23 // 24 //
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 205
205 // Gets the dispatchers attached to this message; this may return null if 206 // Gets the dispatchers attached to this message; this may return null if
206 // there are none. Note that the caller may mutate the set of dispatchers 207 // there are none. Note that the caller may mutate the set of dispatchers
207 // (e.g., take ownership of all the dispatchers, leaving the vector empty). 208 // (e.g., take ownership of all the dispatchers, leaving the vector empty).
208 std::vector<scoped_refptr<Dispatcher> >* dispatchers() { 209 std::vector<scoped_refptr<Dispatcher> >* dispatchers() {
209 return dispatchers_.get(); 210 return dispatchers_.get();
210 } 211 }
211 212
212 // Returns true if this message has dispatchers attached. 213 // Returns true if this message has dispatchers attached.
213 bool has_dispatchers() const { 214 bool has_dispatchers() const {
214 return dispatchers_.get() && !dispatchers_->empty(); 215 return dispatchers_ && !dispatchers_->empty();
216 }
217
218 // Gets the platform-specific handles attached to this message; this may
219 // return null if there are none. Note that the caller may mutate the set of
220 // platform-specific handles.
221 std::vector<embedder::PlatformHandle>* platform_handles() {
222 return platform_handles_.get();
223 }
224
225 // Returns true if this message has platform-specific handles attached.
226 bool has_platform_handles() const {
227 return platform_handles_ && !platform_handles_->empty();
215 } 228 }
216 229
217 // Rounds |n| up to a multiple of |kMessageAlignment|. 230 // Rounds |n| up to a multiple of |kMessageAlignment|.
218 static inline size_t RoundUpMessageAlignment(size_t n) { 231 static inline size_t RoundUpMessageAlignment(size_t n) {
219 return (n + kMessageAlignment - 1) & ~(kMessageAlignment - 1); 232 return (n + kMessageAlignment - 1) & ~(kMessageAlignment - 1);
220 } 233 }
221 234
222 private: 235 private:
223 // To allow us to make assertions about |Header| in the .cc file. 236 // To allow us to make assertions about |Header| in the .cc file.
224 struct PrivateStructForCompileAsserts; 237 struct PrivateStructForCompileAsserts;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 284
272 size_t secondary_buffer_size_; 285 size_t secondary_buffer_size_;
273 void* secondary_buffer_; // May be null. 286 void* secondary_buffer_; // May be null.
274 287
275 // Any dispatchers that may be attached to this message. These dispatchers 288 // Any dispatchers that may be attached to this message. These dispatchers
276 // should be "owned" by this message, i.e., have a ref count of exactly 1. (We 289 // should be "owned" by this message, i.e., have a ref count of exactly 1. (We
277 // allow a dispatcher entry to be null, in case it couldn't be duplicated for 290 // allow a dispatcher entry to be null, in case it couldn't be duplicated for
278 // some reason.) 291 // some reason.)
279 scoped_ptr<std::vector<scoped_refptr<Dispatcher> > > dispatchers_; 292 scoped_ptr<std::vector<scoped_refptr<Dispatcher> > > dispatchers_;
280 293
294 // Any platform-specific handles attached to this message (for inter-process
295 // transport). The vector (if any) owns the handles that it contains (and is
296 // responsible for closing them).
297 // TODO(vtl): With C++11, change it to a vector of |ScopedPlatformHandles|.
298 scoped_ptr<std::vector<embedder::PlatformHandle> > platform_handles_;
299
281 DISALLOW_COPY_AND_ASSIGN(MessageInTransit); 300 DISALLOW_COPY_AND_ASSIGN(MessageInTransit);
282 }; 301 };
283 302
284 } // namespace system 303 } // namespace system
285 } // namespace mojo 304 } // namespace mojo
286 305
287 #endif // MOJO_SYSTEM_MESSAGE_IN_TRANSIT_H_ 306 #endif // MOJO_SYSTEM_MESSAGE_IN_TRANSIT_H_
OLDNEW
« no previous file with comments | « no previous file | mojo/system/message_in_transit.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698