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

Side by Side Diff: mojo/public/system/core.h

Issue 118873004: Mojo: DataPipe: Write some docs and rationalize some return values. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comment fixes Created 6 years, 11 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/local_data_pipe.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_PUBLIC_SYSTEM_CORE_H_ 5 #ifndef MOJO_PUBLIC_SYSTEM_CORE_H_
6 #define MOJO_PUBLIC_SYSTEM_CORE_H_ 6 #define MOJO_PUBLIC_SYSTEM_CORE_H_
7 7
8 // Note: This header should be compilable as C. 8 // Note: This header should be compilable as C.
9 9
10 #include <stdint.h> 10 #include <stdint.h>
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 MOJO_SYSTEM_EXPORT MojoResult MojoReadMessage(MojoHandle message_pipe_handle, 431 MOJO_SYSTEM_EXPORT MojoResult MojoReadMessage(MojoHandle message_pipe_handle,
432 void* bytes, 432 void* bytes,
433 uint32_t* num_bytes, 433 uint32_t* num_bytes,
434 MojoHandle* handles, 434 MojoHandle* handles,
435 uint32_t* num_handles, 435 uint32_t* num_handles,
436 MojoReadMessageFlags flags); 436 MojoReadMessageFlags flags);
437 437
438 // Data pipe: 438 // Data pipe:
439 // TODO(vtl): Moar docs. 439 // TODO(vtl): Moar docs.
440 440
441 // Creates a data pipe, which is a unidirectional communication channel for
442 // unframed data, with the given options. Data is unframed, but must come as
443 // (multiples of) discrete elements, of the size given in |options|. See
444 // |MojoCreateDataPipeOptions| for a description of the different options
445 // available for data pipes.
446 //
447 // |options| may be set to null for a data pipe with the default options (which
448 // will have an element size of one byte and have some system-dependent
darin (slow to review) 2014/01/07 04:28:47 it might help to know this system dependent capaci
viettrungluu 2014/01/07 05:45:25 I want to add some ability to query information ab
449 // capacity).
450 //
451 // On success, |*data_pipe_producer_handle| will be set to the handle for the
452 // producer and |*data_pipe_consumer_handle| will be set to the handle for the
453 // consumer. (On failure, they are not modified.)
454 //
455 // Returns:
456 // |MOJO_RESULT_OK| on success.
457 // |MOJO_RESULT_INVALID_ARGUMENT| if some argument was invalid (e.g., if
458 // |*options| is invalid or one of the pointer handles looks invalid).
459 // |MOJO_RESULT_RESOURCE_EXHAUSTED| if a process/system/quota/etc. limit has
460 // been reached (e.g., if the requested capacity was too large, or if the
461 // maximum number of handles was exceeded).
441 MOJO_SYSTEM_EXPORT MojoResult MojoCreateDataPipe( 462 MOJO_SYSTEM_EXPORT MojoResult MojoCreateDataPipe(
442 const struct MojoCreateDataPipeOptions* options, 463 const struct MojoCreateDataPipeOptions* options,
443 MojoHandle* data_pipe_producer_handle, 464 MojoHandle* data_pipe_producer_handle,
444 MojoHandle* data_pipe_consumer_handle); 465 MojoHandle* data_pipe_consumer_handle);
445 466
467 // Writes the given data to the data pipe producer given by
468 // |data_pipe_producer_handle|. |elements| points to data of size |*num_bytes|;
469 // |*num_bytes| should be a multiple of the data pipe's element size. If
470 // |MOJO_WRITE_DATA_FLAG_ALL_OR_NONE| is set in |flags|, either all the data
471 // will be written or none is.
472 //
473 // On success, |*num_bytes| is set to the amount of data that was actually
474 // written.
475 //
476 // Note: If the data pipe has the "may discard" option flag (specified on
477 // creation), this will discard as much data as required to write the given
478 // data, starting with the earliest written data. However, even with "may
darin (slow to review) 2014/01/07 04:28:47 nit: "earliest written data [that has not yet been
viettrungluu 2014/01/07 05:45:25 Done.
479 // discard", if |*num_bytes| is greater than the data pipe's capacity (and
480 // |MOJO_WRITE_DATA_FLAG_ALL_OR_NONE| is not set), this write will the amount
darin (slow to review) 2014/01/07 04:28:47 nit: "write will the amount" -> "will write the [m
viettrungluu 2014/01/07 05:45:25 Done.
481 // possible (namely, the data pipe's capacity) and set |*num_bytes| to that
482 // amount. It will *not* discard data from |elements|.
483 //
484 // Returns:
485 // |MOJO_RESULT_OK| on success.
486 // |MOJO_RESULT_INVALID_ARGUMENT| if some argument was invalid (e.g., if
487 // |data_pipe_producer_dispatcher| is not a handle to a data pipe
488 // producer, |elements| does not look like a valid pointer, or
489 // |*num_bytes| is not a multiple of the data pipe's element size).
490 // |MOJO_RESULT_FAILED_PRECONDITION| if the data pipe consumer handle has been
491 // closed.
492 // |MOJO_RESULT_OUT_OF_RANGE| if |flags| has
493 // |MOJO_WRITE_DATA_FLAG_ALL_OR_NONE| set and the required amount of data
494 // (specified by |*num_bytes|) could not be written.
495 // |MOJO_RESULT_BUSY| if there is a two-phase write ongoing with
496 // |data_pipe_producer_handle| (i.e., |MojoBeginWriteData()| has been
497 // called, but not yet the matching |MojoEndWriteData()|).
498 // |MOJO_RESULT_SHOULD_WAIT| if no data can currently be written (and the
499 // consumer is still open) and |flags| does *not* have
500 // |MOJO_WRITE_DATA_FLAG_ALL_OR_NONE| set.
501 //
502 // TODO(vtl): Should there be a way of querying how much data can be written?
446 MOJO_SYSTEM_EXPORT MojoResult MojoWriteData( 503 MOJO_SYSTEM_EXPORT MojoResult MojoWriteData(
447 MojoHandle data_pipe_producer_handle, 504 MojoHandle data_pipe_producer_handle,
448 const void* elements, 505 const void* elements,
449 uint32_t* num_bytes, 506 uint32_t* num_bytes,
450 MojoWriteDataFlags flags); 507 MojoWriteDataFlags flags);
451 508
509 // TODO(vtl): Document me.
452 // TODO(vtl): Note to self: |buffer_num_bytes| is an "in-out" parameter: on the 510 // TODO(vtl): Note to self: |buffer_num_bytes| is an "in-out" parameter: on the
453 // "in" side, |*buffer_num_bytes| is the number requested; on success, on the 511 // "in" side, |*buffer_num_bytes| is the number requested; on success, on the
454 // "out" side, it's the number available (which may be GREATER or LESS than the 512 // "out" side, it's the number available (which may be GREATER or LESS than the
455 // number requested; if the "all-or-nothing" flag is set, it's AT LEAST the 513 // number requested; if the "all-or-nothing" flag is set, it's AT LEAST the
456 // number requested). 514 // number requested).
457 MOJO_SYSTEM_EXPORT MojoResult MojoBeginWriteData( 515 MOJO_SYSTEM_EXPORT MojoResult MojoBeginWriteData(
458 MojoHandle data_pipe_producer_handle, 516 MojoHandle data_pipe_producer_handle,
459 void** buffer, 517 void** buffer,
460 uint32_t* buffer_num_bytes, 518 uint32_t* buffer_num_bytes,
461 MojoWriteDataFlags flags); 519 MojoWriteDataFlags flags);
462 520
521 // TODO(vtl): Document me.
463 MOJO_SYSTEM_EXPORT MojoResult MojoEndWriteData( 522 MOJO_SYSTEM_EXPORT MojoResult MojoEndWriteData(
464 MojoHandle data_pipe_producer_handle, 523 MojoHandle data_pipe_producer_handle,
465 uint32_t num_bytes_written); 524 uint32_t num_bytes_written);
466 525
526 // Reads data from the data pipe consumer given by |data_pipe_consumer_handle|.
527 // May also be used to discard data or query the amount of data available.
darin (slow to review) 2014/01/07 04:28:47 It is not clear to me why we have MOJO_READ_DATA_F
viettrungluu 2014/01/07 05:45:25 The situation isn't quite the same. For message pi
528 //
529 // If |flags| has neither |MOJO_READ_DATA_FLAG_DISCARD| nor
530 // |MOJO_READ_DATA_FLAG_QUERY| set, this tries to read up to |*num_bytes| (which
531 // must be a multiple of the data pipe's element size) bytes of data to
532 // |elements| and set |*num_bytes| to the amount actually read. If flags has
533 // |MOJO_READ_DATA_FLAG_ALL_OR_NONE| set, it will either read exactly
534 // |*num_bytes| bytes of data or none.
535 //
536 // If flags has |MOJO_READ_DATA_FLAG_DISCARD| set, it discards up to
537 // |*num_bytes| (which again be a multiple of the element size) bytes of data,
538 // setting |*num_bytes| to the amount actually discarded. If flags has
539 // |MOJO_READ_DATA_FLAG_ALL_OR_NONE|, it will either discard exactly
540 // |*num_bytes| bytes of data or none. In this case, |MOJO_READ_DATA_FLAG_QUERY|
541 // must not be set, and |elements| is ignored (and should typically be set to
542 // null).
543 //
544 // If flags has |MOJO_READ_DATA_FLAG_QUERY| set, it queries the amount of data
545 // available, setting |*num_bytes| to the number of bytes available. In this
546 // case, |MOJO_READ_DATA_FLAG_DISCARD| must not be set, and
547 // |MOJO_READ_DATA_FLAG_ALL_OR_NONE| is ignored, as are |elements| and the input
548 // value of |*num_bytes|.
549 //
550 // Returns:
551 // |MOJO_RESULT_OK| on success (see above for a description of the different
552 // operations).
553 // |MOJO_RESULT_INVALID_ARGUMENT| if some argument was invalid (e.g.,
554 // |data_pipe_consumer_handle| is invalid, the combination of flags in
555 // |flags| is invalid, etc.).
556 // |MOJO_RESULT_FAILED_PRECONDITION| if the data pipe producer handle has been
557 // closed and data (or the required amount of data) was not available to
558 // be read or discarded.
559 // |MOJO_RESULT_OUT_OF_RANGE| if |flags| has |MOJO_READ_DATA_FLAG_ALL_OR_NONE|
560 // set and the required amount of data is not available to be read or
561 // discarded (and the producer is still open).
562 // |MOJO_RESULT_BUSY| if there is a two-phase read ongoing with
563 // |data_pipe_consumer_handle| (i.e., |MojoBeginReadData()| has been
564 // called, but not yet the matching |MojoEndReadData()|).
565 // |MOJO_RESULT_SHOULD_WAIT| if there is no data to be read or discarded (and
566 // the producer is still open) and |flags| does *not* have
567 // |MOJO_READ_DATA_FLAG_ALL_OR_NONE| set.
568 //
467 // TODO(vtl): Note to self: If |MOJO_READ_DATA_FLAG_QUERY| is set, then 569 // TODO(vtl): Note to self: If |MOJO_READ_DATA_FLAG_QUERY| is set, then
468 // |elements| must be null (and nothing will be read). 570 // |elements| must be null (and nothing will be read).
469 MOJO_SYSTEM_EXPORT MojoResult MojoReadData( 571 MOJO_SYSTEM_EXPORT MojoResult MojoReadData(
470 MojoHandle data_pipe_consumer_handle, 572 MojoHandle data_pipe_consumer_handle,
471 void* elements, 573 void* elements,
472 uint32_t* num_bytes, 574 uint32_t* num_bytes,
473 MojoReadDataFlags flags); 575 MojoReadDataFlags flags);
474 576
577 // TODO(vtl): Document me.
475 MOJO_SYSTEM_EXPORT MojoResult MojoBeginReadData( 578 MOJO_SYSTEM_EXPORT MojoResult MojoBeginReadData(
476 MojoHandle data_pipe_consumer_handle, 579 MojoHandle data_pipe_consumer_handle,
477 const void** buffer, 580 const void** buffer,
478 uint32_t* buffer_num_bytes, 581 uint32_t* buffer_num_bytes,
479 MojoReadDataFlags flags); 582 MojoReadDataFlags flags);
480 583
584 // TODO(vtl): Document me.
481 MOJO_SYSTEM_EXPORT MojoResult MojoEndReadData( 585 MOJO_SYSTEM_EXPORT MojoResult MojoEndReadData(
482 MojoHandle data_pipe_consumer_handle, 586 MojoHandle data_pipe_consumer_handle,
483 uint32_t num_bytes_read); 587 uint32_t num_bytes_read);
484 588
485 #ifdef __cplusplus 589 #ifdef __cplusplus
486 } // extern "C" 590 } // extern "C"
487 #endif 591 #endif
488 592
489 #endif // MOJO_PUBLIC_SYSTEM_CORE_H_ 593 #endif // MOJO_PUBLIC_SYSTEM_CORE_H_
OLDNEW
« no previous file with comments | « no previous file | mojo/system/local_data_pipe.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698