| Index: mojo/system/local_data_pipe.cc
|
| diff --git a/mojo/system/local_data_pipe.cc b/mojo/system/local_data_pipe.cc
|
| index 942e4be81322032ca9be8a05b63be9652f4b84ba..d98ccf42ac468ea1636f254b7070d643e169fcc8 100644
|
| --- a/mojo/system/local_data_pipe.cc
|
| +++ b/mojo/system/local_data_pipe.cc
|
| @@ -151,19 +151,14 @@ MojoResult LocalDataPipe::ProducerEndWriteDataImplNoLock(
|
| return MOJO_RESULT_OK;
|
| }
|
|
|
| -MojoWaitFlags LocalDataPipe::ProducerSatisfiedFlagsNoLock() {
|
| - MojoWaitFlags rv = MOJO_WAIT_FLAG_NONE;
|
| - if (consumer_open_no_lock() &&
|
| - (may_discard() || current_num_bytes_ < capacity_num_bytes()) &&
|
| - !producer_in_two_phase_write_no_lock())
|
| - rv |= MOJO_WAIT_FLAG_WRITABLE;
|
| - return rv;
|
| -}
|
| -
|
| -MojoWaitFlags LocalDataPipe::ProducerSatisfiableFlagsNoLock() {
|
| - MojoWaitFlags rv = MOJO_WAIT_FLAG_NONE;
|
| - if (consumer_open_no_lock())
|
| - rv |= MOJO_WAIT_FLAG_WRITABLE;
|
| +WaitFlagsState LocalDataPipe::ProducerGetWaitFlagsStateNoLock() const {
|
| + WaitFlagsState rv;
|
| + if (consumer_open_no_lock()) {
|
| + if ((may_discard() || current_num_bytes_ < capacity_num_bytes()) &&
|
| + !producer_in_two_phase_write_no_lock())
|
| + rv.satisfied_flags |= MOJO_WAIT_FLAG_WRITABLE;
|
| + rv.satisfiable_flags |= MOJO_WAIT_FLAG_WRITABLE;
|
| + }
|
| return rv;
|
| }
|
|
|
| @@ -278,17 +273,15 @@ MojoResult LocalDataPipe::ConsumerEndReadDataImplNoLock(
|
| return MOJO_RESULT_OK;
|
| }
|
|
|
| -MojoWaitFlags LocalDataPipe::ConsumerSatisfiedFlagsNoLock() {
|
| - MojoWaitFlags rv = MOJO_WAIT_FLAG_NONE;
|
| - if (current_num_bytes_ > 0 && !consumer_in_two_phase_read_no_lock())
|
| - rv |= MOJO_WAIT_FLAG_READABLE;
|
| - return rv;
|
| -}
|
| -
|
| -MojoWaitFlags LocalDataPipe::ConsumerSatisfiableFlagsNoLock() {
|
| - MojoWaitFlags rv = MOJO_WAIT_FLAG_NONE;
|
| - if (current_num_bytes_ > 0 || producer_open_no_lock())
|
| - rv |= MOJO_WAIT_FLAG_READABLE;
|
| +WaitFlagsState LocalDataPipe::ConsumerGetWaitFlagsStateNoLock() const {
|
| + WaitFlagsState rv;
|
| + if (current_num_bytes_ > 0) {
|
| + if (!consumer_in_two_phase_read_no_lock())
|
| + rv.satisfied_flags |= MOJO_WAIT_FLAG_READABLE;
|
| + rv.satisfiable_flags |= MOJO_WAIT_FLAG_READABLE;
|
| + } else if (producer_open_no_lock()) {
|
| + rv.satisfiable_flags |= MOJO_WAIT_FLAG_READABLE;
|
| + }
|
| return rv;
|
| }
|
|
|
|
|