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

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

Issue 262093003: Mojo: Add/use |typedef std::vector<scoped_refptr<Dispatcher> > DispatcherVector. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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/local_message_pipe_endpoint.cc ('k') | 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 <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 // TODO(vtl): In |RawChannelPosix|, the alignment requirements are currently 142 // TODO(vtl): In |RawChannelPosix|, the alignment requirements are currently
143 // satisified on a faith-based basis. 143 // satisified on a faith-based basis.
144 static bool GetNextMessageSize(const void* buffer, 144 static bool GetNextMessageSize(const void* buffer,
145 size_t buffer_size, 145 size_t buffer_size,
146 size_t* next_message_size); 146 size_t* next_message_size);
147 147
148 // Makes this message "own" the given set of dispatchers. The dispatchers must 148 // Makes this message "own" the given set of dispatchers. The dispatchers must
149 // not be referenced from anywhere else (in particular, not from the handle 149 // not be referenced from anywhere else (in particular, not from the handle
150 // table), i.e., each dispatcher must have a reference count of 1. This 150 // table), i.e., each dispatcher must have a reference count of 1. This
151 // message must not already have dispatchers. 151 // message must not already have dispatchers.
152 void SetDispatchers( 152 void SetDispatchers(scoped_ptr<DispatcherVector> dispatchers);
153 scoped_ptr<std::vector<scoped_refptr<Dispatcher> > > dispatchers);
154 153
155 // Serializes any dispatchers to the secondary buffer. This message must not 154 // Serializes any dispatchers to the secondary buffer. This message must not
156 // already have a secondary buffer (so this must only be called once). The 155 // already have a secondary buffer (so this must only be called once). The
157 // caller must ensure (e.g., by holding on to a reference) that |channel| 156 // caller must ensure (e.g., by holding on to a reference) that |channel|
158 // stays alive through the call. 157 // stays alive through the call.
159 void SerializeAndCloseDispatchers(Channel* channel); 158 void SerializeAndCloseDispatchers(Channel* channel);
160 159
161 // Gets the main buffer and its size (in number of bytes), respectively. 160 // Gets the main buffer and its size (in number of bytes), respectively.
162 const void* main_buffer() const { return main_buffer_.get(); } 161 const void* main_buffer() const { return main_buffer_.get(); }
163 size_t main_buffer_size() const { return main_buffer_size_; } 162 size_t main_buffer_size() const { return main_buffer_size_; }
(...skipping 17 matching lines...) Expand all
181 EndpointId destination_id() const { return header()->destination_id; } 180 EndpointId destination_id() const { return header()->destination_id; }
182 181
183 void set_source_id(EndpointId source_id) { header()->source_id = source_id; } 182 void set_source_id(EndpointId source_id) { header()->source_id = source_id; }
184 void set_destination_id(EndpointId destination_id) { 183 void set_destination_id(EndpointId destination_id) {
185 header()->destination_id = destination_id; 184 header()->destination_id = destination_id;
186 } 185 }
187 186
188 // Gets the dispatchers attached to this message; this may return null if 187 // Gets the dispatchers attached to this message; this may return null if
189 // there are none. Note that the caller may mutate the set of dispatchers 188 // there are none. Note that the caller may mutate the set of dispatchers
190 // (e.g., take ownership of all the dispatchers, leaving the vector empty). 189 // (e.g., take ownership of all the dispatchers, leaving the vector empty).
191 std::vector<scoped_refptr<Dispatcher> >* dispatchers() { 190 DispatcherVector* dispatchers() { return dispatchers_.get(); }
192 return dispatchers_.get();
193 }
194 191
195 // Returns true if this message has dispatchers attached. 192 // Returns true if this message has dispatchers attached.
196 bool has_dispatchers() const { 193 bool has_dispatchers() const {
197 return dispatchers_ && !dispatchers_->empty(); 194 return dispatchers_ && !dispatchers_->empty();
198 } 195 }
199 196
200 // Rounds |n| up to a multiple of |kMessageAlignment|. 197 // Rounds |n| up to a multiple of |kMessageAlignment|.
201 static inline size_t RoundUpMessageAlignment(size_t n) { 198 static inline size_t RoundUpMessageAlignment(size_t n) {
202 return (n + kMessageAlignment - 1) & ~(kMessageAlignment - 1); 199 return (n + kMessageAlignment - 1) & ~(kMessageAlignment - 1);
203 } 200 }
(...skipping 29 matching lines...) Expand all
233 230
234 const size_t main_buffer_size_; 231 const size_t main_buffer_size_;
235 const scoped_ptr<char, base::AlignedFreeDeleter> main_buffer_; // Never null. 232 const scoped_ptr<char, base::AlignedFreeDeleter> main_buffer_; // Never null.
236 233
237 scoped_ptr<TransportData> transport_data_; // May be null. 234 scoped_ptr<TransportData> transport_data_; // May be null.
238 235
239 // Any dispatchers that may be attached to this message. These dispatchers 236 // Any dispatchers that may be attached to this message. These dispatchers
240 // should be "owned" by this message, i.e., have a ref count of exactly 1. (We 237 // should be "owned" by this message, i.e., have a ref count of exactly 1. (We
241 // allow a dispatcher entry to be null, in case it couldn't be duplicated for 238 // allow a dispatcher entry to be null, in case it couldn't be duplicated for
242 // some reason.) 239 // some reason.)
243 scoped_ptr<std::vector<scoped_refptr<Dispatcher> > > dispatchers_; 240 scoped_ptr<DispatcherVector> dispatchers_;
244 241
245 DISALLOW_COPY_AND_ASSIGN(MessageInTransit); 242 DISALLOW_COPY_AND_ASSIGN(MessageInTransit);
246 }; 243 };
247 244
248 } // namespace system 245 } // namespace system
249 } // namespace mojo 246 } // namespace mojo
250 247
251 #endif // MOJO_SYSTEM_MESSAGE_IN_TRANSIT_H_ 248 #endif // MOJO_SYSTEM_MESSAGE_IN_TRANSIT_H_
OLDNEW
« no previous file with comments | « mojo/system/local_message_pipe_endpoint.cc ('k') | mojo/system/message_in_transit.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698