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

Side by Side Diff: mojo/public/c/system/data_pipe.h

Issue 1817303002: Update comments in system headers to include MOJO_RESULT_BUSY behavior. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 9 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
« no previous file with comments | « mojo/public/c/system/buffer.h ('k') | mojo/public/c/system/message_pipe.h » ('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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 // This file contains types/constants and functions specific to data pipes. 5 // This file contains types/constants and functions specific to data pipes.
6 // 6 //
7 // Note: This header should be compilable as C. 7 // Note: This header should be compilable as C.
8 8
9 #ifndef MOJO_PUBLIC_C_SYSTEM_DATA_PIPE_H_ 9 #ifndef MOJO_PUBLIC_C_SYSTEM_DATA_PIPE_H_
10 #define MOJO_PUBLIC_C_SYSTEM_DATA_PIPE_H_ 10 #define MOJO_PUBLIC_C_SYSTEM_DATA_PIPE_H_
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 // |MOJO_RESULT_OK| on success. 121 // |MOJO_RESULT_OK| on success.
122 // |MOJO_RESULT_INVALID_ARGUMENT| if some argument was invalid (e.g., 122 // |MOJO_RESULT_INVALID_ARGUMENT| if some argument was invalid (e.g.,
123 // |data_pipe_producer_dispatcher| is not a handle to a data pipe 123 // |data_pipe_producer_dispatcher| is not a handle to a data pipe
124 // producer or |*num_bytes| is not a multiple of the data pipe's element 124 // producer or |*num_bytes| is not a multiple of the data pipe's element
125 // size). 125 // size).
126 // |MOJO_RESULT_FAILED_PRECONDITION| if the data pipe consumer handle has been 126 // |MOJO_RESULT_FAILED_PRECONDITION| if the data pipe consumer handle has been
127 // closed. 127 // closed.
128 // |MOJO_RESULT_OUT_OF_RANGE| if |flags| has 128 // |MOJO_RESULT_OUT_OF_RANGE| if |flags| has
129 // |MOJO_WRITE_DATA_FLAG_ALL_OR_NONE| set and the required amount of data 129 // |MOJO_WRITE_DATA_FLAG_ALL_OR_NONE| set and the required amount of data
130 // (specified by |*num_bytes|) could not be written. 130 // (specified by |*num_bytes|) could not be written.
131 // |MOJO_RESULT_BUSY| if there is a two-phase write ongoing with 131 // |MOJO_RESULT_BUSY| if |data_pipe_producer_handle| is currently in use in
132 // |data_pipe_producer_handle| (i.e., |MojoBeginWriteData()| has been 132 // some transaction (that, e.g., may result in it being invalidated, such
133 // as being sent in a message), or if there is a two-phase write ongoing
134 // with |data_pipe_producer_handle| (i.e., |MojoBeginWriteData()| has been
133 // called, but not yet the matching |MojoEndWriteData()|). 135 // called, but not yet the matching |MojoEndWriteData()|).
134 // |MOJO_RESULT_SHOULD_WAIT| if no data can currently be written (and the 136 // |MOJO_RESULT_SHOULD_WAIT| if no data can currently be written (and the
135 // consumer is still open) and |flags| does *not* have 137 // consumer is still open) and |flags| does *not* have
136 // |MOJO_WRITE_DATA_FLAG_ALL_OR_NONE| set. 138 // |MOJO_WRITE_DATA_FLAG_ALL_OR_NONE| set.
137 // 139 //
138 // TODO(vtl): Should there be a way of querying how much data can be written? 140 // TODO(vtl): Should there be a way of querying how much data can be written?
139 MojoResult MojoWriteData(MojoHandle data_pipe_producer_handle, // In. 141 MojoResult MojoWriteData(MojoHandle data_pipe_producer_handle, // In.
140 const void* MOJO_RESTRICT elements, // In. 142 const void* MOJO_RESTRICT elements, // In.
141 uint32_t* MOJO_RESTRICT num_bytes, // In/out. 143 uint32_t* MOJO_RESTRICT num_bytes, // In/out.
142 MojoWriteDataFlags flags); // In. 144 MojoWriteDataFlags flags); // In.
(...skipping 13 matching lines...) Expand all
156 // specify the amount written and to complete the two-phase write. 158 // specify the amount written and to complete the two-phase write.
157 // |MojoEndWriteData()| need not be called for other return values. 159 // |MojoEndWriteData()| need not be called for other return values.
158 // 160 //
159 // Returns: 161 // Returns:
160 // |MOJO_RESULT_OK| on success. 162 // |MOJO_RESULT_OK| on success.
161 // |MOJO_RESULT_INVALID_ARGUMENT| if some argument was invalid (e.g., 163 // |MOJO_RESULT_INVALID_ARGUMENT| if some argument was invalid (e.g.,
162 // |data_pipe_producer_handle| is not a handle to a data pipe producer or 164 // |data_pipe_producer_handle| is not a handle to a data pipe producer or
163 // flags has |MOJO_WRITE_DATA_FLAG_ALL_OR_NONE| set). 165 // flags has |MOJO_WRITE_DATA_FLAG_ALL_OR_NONE| set).
164 // |MOJO_RESULT_FAILED_PRECONDITION| if the data pipe consumer handle has been 166 // |MOJO_RESULT_FAILED_PRECONDITION| if the data pipe consumer handle has been
165 // closed. 167 // closed.
166 // |MOJO_RESULT_BUSY| if there is already a two-phase write ongoing with 168 // |MOJO_RESULT_BUSY| if |data_pipe_producer_handle| is currently in use in
167 // |data_pipe_producer_handle| (i.e., |MojoBeginWriteData()| has been 169 // some transaction (that, e.g., may result in it being invalidated, such
168 // called, but not yet the matching |MojoEndWriteData()|). 170 // as being sent in a message), or if there is already a two-phase write
171 // ongoing with |data_pipe_producer_handle| (i.e., |MojoBeginWriteData()|
172 // has been called, but not yet the matching |MojoEndWriteData()|).
169 // |MOJO_RESULT_SHOULD_WAIT| if no data can currently be written (and the 173 // |MOJO_RESULT_SHOULD_WAIT| if no data can currently be written (and the
170 // consumer is still open). 174 // consumer is still open).
171 MojoResult MojoBeginWriteData(MojoHandle data_pipe_producer_handle, // In. 175 MojoResult MojoBeginWriteData(MojoHandle data_pipe_producer_handle, // In.
172 void** MOJO_RESTRICT buffer, // Out. 176 void** MOJO_RESTRICT buffer, // Out.
173 uint32_t* MOJO_RESTRICT buffer_num_bytes, // Out. 177 uint32_t* MOJO_RESTRICT buffer_num_bytes, // Out.
174 MojoWriteDataFlags flags); // In. 178 MojoWriteDataFlags flags); // In.
175 179
176 // |MojoEndWriteData()|: Ends a two-phase write to the data pipe producer given 180 // |MojoEndWriteData()|: Ends a two-phase write to the data pipe producer given
177 // by |data_pipe_producer_handle| that was begun by a call to 181 // by |data_pipe_producer_handle| that was begun by a call to
178 // |MojoBeginWriteData()| on the same handle. |num_bytes_written| should 182 // |MojoBeginWriteData()| on the same handle. |num_bytes_written| should
179 // indicate the amount of data actually written; it must be less than or equal 183 // indicate the amount of data actually written; it must be less than or equal
180 // to the value of |*buffer_num_bytes| output by |MojoBeginWriteData()| and must 184 // to the value of |*buffer_num_bytes| output by |MojoBeginWriteData()| and must
181 // be a multiple of the element size. The buffer given by |*buffer| from 185 // be a multiple of the element size. The buffer given by |*buffer| from
182 // |MojoBeginWriteData()| must have been filled with exactly |num_bytes_written| 186 // |MojoBeginWriteData()| must have been filled with exactly |num_bytes_written|
183 // bytes of data. 187 // bytes of data.
184 // 188 //
185 // On failure, the two-phase write (if any) is ended (so the handle may become 189 // On failure, the two-phase write (if any) is ended (so the handle may become
186 // writable again, if there's space available) but no data written to |*buffer| 190 // writable again, if there's space available) but no data written to |*buffer|
187 // is "put into" the data pipe. 191 // is "put into" the data pipe.
188 // 192 //
189 // Returns: 193 // Returns:
190 // |MOJO_RESULT_OK| on success. 194 // |MOJO_RESULT_OK| on success.
191 // |MOJO_RESULT_INVALID_ARGUMENT| if some argument was invalid (e.g., 195 // |MOJO_RESULT_INVALID_ARGUMENT| if some argument was invalid (e.g.,
192 // |data_pipe_producer_handle| is not a handle to a data pipe producer or 196 // |data_pipe_producer_handle| is not a handle to a data pipe producer or
193 // |num_bytes_written| is invalid (greater than the maximum value provided 197 // |num_bytes_written| is invalid (greater than the maximum value provided
194 // by |MojoBeginWriteData()| or not a multiple of the element size). 198 // by |MojoBeginWriteData()| or not a multiple of the element size).
195 // |MOJO_RESULT_FAILED_PRECONDITION| if the data pipe producer is not in a 199 // |MOJO_RESULT_FAILED_PRECONDITION| if the data pipe producer is not in a
196 // two-phase write (e.g., |MojoBeginWriteData()| was not called or 200 // two-phase write (e.g., |MojoBeginWriteData()| was not called or
197 // |MojoEndWriteData()| has already been called). 201 // |MojoEndWriteData()| has already been called).
202 // |MOJO_RESULT_BUSY| if |data_pipe_producer_handle| is currently in use in
203 // some transaction (that, e.g., may result in it being invalidated, such
204 // as being sent in a message).
198 MojoResult MojoEndWriteData(MojoHandle data_pipe_producer_handle, // In. 205 MojoResult MojoEndWriteData(MojoHandle data_pipe_producer_handle, // In.
199 uint32_t num_bytes_written); // In. 206 uint32_t num_bytes_written); // In.
200 207
201 // |MojoReadData()|: Reads data from the data pipe consumer given by 208 // |MojoReadData()|: Reads data from the data pipe consumer given by
202 // |data_pipe_consumer_handle|. May also be used to discard data or query the 209 // |data_pipe_consumer_handle|. May also be used to discard data or query the
203 // amount of data available. 210 // amount of data available.
204 // 211 //
205 // If |flags| has neither |MOJO_READ_DATA_FLAG_DISCARD| nor 212 // If |flags| has neither |MOJO_READ_DATA_FLAG_DISCARD| nor
206 // |MOJO_READ_DATA_FLAG_QUERY| set, this tries to read up to |*num_bytes| (which 213 // |MOJO_READ_DATA_FLAG_QUERY| set, this tries to read up to |*num_bytes| (which
207 // must be a multiple of the data pipe's element size) bytes of data to 214 // must be a multiple of the data pipe's element size) bytes of data to
(...skipping 22 matching lines...) Expand all
230 // operations). 237 // operations).
231 // |MOJO_RESULT_INVALID_ARGUMENT| if some argument was invalid (e.g., 238 // |MOJO_RESULT_INVALID_ARGUMENT| if some argument was invalid (e.g.,
232 // |data_pipe_consumer_handle| is invalid, the combination of flags in 239 // |data_pipe_consumer_handle| is invalid, the combination of flags in
233 // |flags| is invalid, etc.). 240 // |flags| is invalid, etc.).
234 // |MOJO_RESULT_FAILED_PRECONDITION| if the data pipe producer handle has been 241 // |MOJO_RESULT_FAILED_PRECONDITION| if the data pipe producer handle has been
235 // closed and data (or the required amount of data) was not available to 242 // closed and data (or the required amount of data) was not available to
236 // be read or discarded. 243 // be read or discarded.
237 // |MOJO_RESULT_OUT_OF_RANGE| if |flags| has |MOJO_READ_DATA_FLAG_ALL_OR_NONE| 244 // |MOJO_RESULT_OUT_OF_RANGE| if |flags| has |MOJO_READ_DATA_FLAG_ALL_OR_NONE|
238 // set and the required amount of data is not available to be read or 245 // set and the required amount of data is not available to be read or
239 // discarded (and the producer is still open). 246 // discarded (and the producer is still open).
240 // |MOJO_RESULT_BUSY| if there is a two-phase read ongoing with 247 // |MOJO_RESULT_BUSY| if |data_pipe_consumer_handle| is currently in use in
241 // |data_pipe_consumer_handle| (i.e., |MojoBeginReadData()| has been 248 // some transaction (that, e.g., may result in it being invalidated, such
249 // as being sent in a message), or if there is a two-phase read ongoing
250 // with |data_pipe_consumer_handle| (i.e., |MojoBeginReadData()| has been
242 // called, but not yet the matching |MojoEndReadData()|). 251 // called, but not yet the matching |MojoEndReadData()|).
243 // |MOJO_RESULT_SHOULD_WAIT| if there is no data to be read or discarded (and 252 // |MOJO_RESULT_SHOULD_WAIT| if there is no data to be read or discarded (and
244 // the producer is still open) and |flags| does *not* have 253 // the producer is still open) and |flags| does *not* have
245 // |MOJO_READ_DATA_FLAG_ALL_OR_NONE| set. 254 // |MOJO_READ_DATA_FLAG_ALL_OR_NONE| set.
246 MojoResult MojoReadData(MojoHandle data_pipe_consumer_handle, // In. 255 MojoResult MojoReadData(MojoHandle data_pipe_consumer_handle, // In.
247 void* MOJO_RESTRICT elements, // Out. 256 void* MOJO_RESTRICT elements, // Out.
248 uint32_t* MOJO_RESTRICT num_bytes, // In/out. 257 uint32_t* MOJO_RESTRICT num_bytes, // In/out.
249 MojoReadDataFlags flags); // In. 258 MojoReadDataFlags flags); // In.
250 259
251 // |MojoBeginReadData()|: Begins a two-phase read from the data pipe consumer 260 // |MojoBeginReadData()|: Begins a two-phase read from the data pipe consumer
(...skipping 10 matching lines...) Expand all
262 // |MojoEndReadData()| to specify the amount read and to complete the two-phase 271 // |MojoEndReadData()| to specify the amount read and to complete the two-phase
263 // read. 272 // read.
264 // 273 //
265 // Returns: 274 // Returns:
266 // |MOJO_RESULT_OK| on success. 275 // |MOJO_RESULT_OK| on success.
267 // |MOJO_RESULT_INVALID_ARGUMENT| if some argument was invalid (e.g., 276 // |MOJO_RESULT_INVALID_ARGUMENT| if some argument was invalid (e.g.,
268 // |data_pipe_consumer_handle| is not a handle to a data pipe consumer, 277 // |data_pipe_consumer_handle| is not a handle to a data pipe consumer,
269 // or |flags| has invalid flags set). 278 // or |flags| has invalid flags set).
270 // |MOJO_RESULT_FAILED_PRECONDITION| if the data pipe producer handle has been 279 // |MOJO_RESULT_FAILED_PRECONDITION| if the data pipe producer handle has been
271 // closed. 280 // closed.
272 // |MOJO_RESULT_BUSY| if there is already a two-phase read ongoing with 281 // |MOJO_RESULT_BUSY| if |data_pipe_consumer_handle| is currently in use in
273 // |data_pipe_consumer_handle| (i.e., |MojoBeginReadData()| has been 282 // some transaction (that, e.g., may result in it being invalidated, such
274 // called, but not yet the matching |MojoEndReadData()|). 283 // as being sent in a message), or if there is already a two-phase read
284 // ongoing with |data_pipe_consumer_handle| (i.e., |MojoBeginReadData()|
285 // has been called, but not yet the matching |MojoEndReadData()|).
275 // |MOJO_RESULT_SHOULD_WAIT| if no data can currently be read (and the 286 // |MOJO_RESULT_SHOULD_WAIT| if no data can currently be read (and the
276 // producer is still open). 287 // producer is still open).
277 MojoResult MojoBeginReadData(MojoHandle data_pipe_consumer_handle, // In. 288 MojoResult MojoBeginReadData(MojoHandle data_pipe_consumer_handle, // In.
278 const void** MOJO_RESTRICT buffer, // Out. 289 const void** MOJO_RESTRICT buffer, // Out.
279 uint32_t* MOJO_RESTRICT buffer_num_bytes, // Out. 290 uint32_t* MOJO_RESTRICT buffer_num_bytes, // Out.
280 MojoReadDataFlags flags); // In. 291 MojoReadDataFlags flags); // In.
281 292
282 // |MojoEndReadData()|: Ends a two-phase read from the data pipe consumer given 293 // |MojoEndReadData()|: Ends a two-phase read from the data pipe consumer given
283 // by |data_pipe_consumer_handle| that was begun by a call to 294 // by |data_pipe_consumer_handle| that was begun by a call to
284 // |MojoBeginReadData()| on the same handle. |num_bytes_read| should indicate 295 // |MojoBeginReadData()| on the same handle. |num_bytes_read| should indicate
285 // the amount of data actually read; it must be less than or equal to the value 296 // the amount of data actually read; it must be less than or equal to the value
286 // of |*buffer_num_bytes| output by |MojoBeginReadData()| and must be a multiple 297 // of |*buffer_num_bytes| output by |MojoBeginReadData()| and must be a multiple
287 // of the element size. 298 // of the element size.
288 // 299 //
289 // On failure, the two-phase read (if any) is ended (so the handle may become 300 // On failure, the two-phase read (if any) is ended (so the handle may become
290 // readable again) but no data is "removed" from the data pipe. 301 // readable again) but no data is "removed" from the data pipe.
291 // 302 //
292 // Returns: 303 // Returns:
293 // |MOJO_RESULT_OK| on success. 304 // |MOJO_RESULT_OK| on success.
294 // |MOJO_RESULT_INVALID_ARGUMENT| if some argument was invalid (e.g., 305 // |MOJO_RESULT_INVALID_ARGUMENT| if some argument was invalid (e.g.,
295 // |data_pipe_consumer_handle| is not a handle to a data pipe consumer or 306 // |data_pipe_consumer_handle| is not a handle to a data pipe consumer or
296 // |num_bytes_written| is greater than the maximum value provided by 307 // |num_bytes_written| is greater than the maximum value provided by
297 // |MojoBeginReadData()| or not a multiple of the element size). 308 // |MojoBeginReadData()| or not a multiple of the element size).
298 // |MOJO_RESULT_FAILED_PRECONDITION| if the data pipe consumer is not in a 309 // |MOJO_RESULT_FAILED_PRECONDITION| if the data pipe consumer is not in a
299 // two-phase read (e.g., |MojoBeginReadData()| was not called or 310 // two-phase read (e.g., |MojoBeginReadData()| was not called or
300 // |MojoEndReadData()| has already been called). 311 // |MojoEndReadData()| has already been called).
312 // |MOJO_RESULT_BUSY| if |data_pipe_consumer_handle| is currently in use in
313 // some transaction (that, e.g., may result in it being invalidated, such
314 // as being sent in a message).
301 MojoResult MojoEndReadData(MojoHandle data_pipe_consumer_handle, // In. 315 MojoResult MojoEndReadData(MojoHandle data_pipe_consumer_handle, // In.
302 uint32_t num_bytes_read); // In. 316 uint32_t num_bytes_read); // In.
303 317
304 MOJO_END_EXTERN_C 318 MOJO_END_EXTERN_C
305 319
306 #endif // MOJO_PUBLIC_C_SYSTEM_DATA_PIPE_H_ 320 #endif // MOJO_PUBLIC_C_SYSTEM_DATA_PIPE_H_
OLDNEW
« no previous file with comments | « mojo/public/c/system/buffer.h ('k') | mojo/public/c/system/message_pipe.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698