summaryrefslogtreecommitdiffstats
path: root/mojo/edk/system/data_pipe_consumer_dispatcher.cc
diff options
context:
space:
mode:
Diffstat (limited to 'mojo/edk/system/data_pipe_consumer_dispatcher.cc')
-rw-r--r--mojo/edk/system/data_pipe_consumer_dispatcher.cc13
1 files changed, 10 insertions, 3 deletions
diff --git a/mojo/edk/system/data_pipe_consumer_dispatcher.cc b/mojo/edk/system/data_pipe_consumer_dispatcher.cc
index 2b3f514..fa103c3 100644
--- a/mojo/edk/system/data_pipe_consumer_dispatcher.cc
+++ b/mojo/edk/system/data_pipe_consumer_dispatcher.cc
@@ -58,7 +58,8 @@ MojoResult DataPipeConsumerDispatcher::ReadDataImplNoLock(
if ((flags & MOJO_READ_DATA_FLAG_DISCARD)) {
// These flags are mutally exclusive.
- if ((flags & MOJO_READ_DATA_FLAG_QUERY))
+ if ((flags & MOJO_READ_DATA_FLAG_QUERY) ||
+ (flags & MOJO_READ_DATA_FLAG_PEEK))
return MOJO_RESULT_INVALID_ARGUMENT;
DVLOG_IF(2, !elements.IsNull())
<< "Discard mode: ignoring non-null |elements|";
@@ -67,6 +68,8 @@ MojoResult DataPipeConsumerDispatcher::ReadDataImplNoLock(
}
if ((flags & MOJO_READ_DATA_FLAG_QUERY)) {
+ if ((flags & MOJO_READ_DATA_FLAG_PEEK))
+ return MOJO_RESULT_INVALID_ARGUMENT;
DCHECK(!(flags & MOJO_READ_DATA_FLAG_DISCARD)); // Handled above.
DVLOG_IF(2, !elements.IsNull())
<< "Query mode: ignoring non-null |elements|";
@@ -74,7 +77,10 @@ MojoResult DataPipeConsumerDispatcher::ReadDataImplNoLock(
}
return data_pipe_->ConsumerReadData(
- elements, num_bytes, (flags & MOJO_READ_DATA_FLAG_ALL_OR_NONE));
+ elements,
+ num_bytes,
+ !!(flags & MOJO_READ_DATA_FLAG_ALL_OR_NONE),
+ !!(flags & MOJO_READ_DATA_FLAG_PEEK));
}
MojoResult DataPipeConsumerDispatcher::BeginReadDataImplNoLock(
@@ -85,7 +91,8 @@ MojoResult DataPipeConsumerDispatcher::BeginReadDataImplNoLock(
// These flags may not be used in two-phase mode.
if ((flags & MOJO_READ_DATA_FLAG_DISCARD) ||
- (flags & MOJO_READ_DATA_FLAG_QUERY))
+ (flags & MOJO_READ_DATA_FLAG_QUERY) ||
+ (flags & MOJO_READ_DATA_FLAG_PEEK))
return MOJO_RESULT_INVALID_ARGUMENT;
return data_pipe_->ConsumerBeginReadData(