| OLD | NEW |
| 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_DATA_PIPE_H_ | 5 #ifndef MOJO_SYSTEM_DATA_PIPE_H_ |
| 6 #define MOJO_SYSTEM_DATA_PIPE_H_ | 6 #define MOJO_SYSTEM_DATA_PIPE_H_ |
| 7 | 7 |
| 8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
| 9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| 11 #include "base/synchronization/lock.h" | 11 #include "base/synchronization/lock.h" |
| 12 #include "mojo/public/c/system/data_pipe.h" | 12 #include "mojo/public/c/system/data_pipe.h" |
| 13 #include "mojo/public/c/system/types.h" | 13 #include "mojo/public/c/system/types.h" |
| 14 #include "mojo/system/system_impl_export.h" | 14 #include "mojo/system/system_impl_export.h" |
| 15 #include "mojo/system/wait_flags_state.h" |
| 15 | 16 |
| 16 namespace mojo { | 17 namespace mojo { |
| 17 namespace system { | 18 namespace system { |
| 18 | 19 |
| 19 class Waiter; | 20 class Waiter; |
| 20 class WaiterList; | 21 class WaiterList; |
| 21 | 22 |
| 22 // |DataPipe| is a base class for secondary objects implementing data pipes, | 23 // |DataPipe| is a base class for secondary objects implementing data pipes, |
| 23 // similar to |MessagePipe| (see the explanatory comment in core.cc). It is | 24 // similar to |MessagePipe| (see the explanatory comment in core.cc). It is |
| 24 // typically owned by the dispatcher(s) corresponding to the local endpoints. | 25 // typically owned by the dispatcher(s) corresponding to the local endpoints. |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 virtual MojoResult ProducerWriteDataImplNoLock(const void* elements, | 99 virtual MojoResult ProducerWriteDataImplNoLock(const void* elements, |
| 99 uint32_t* num_bytes, | 100 uint32_t* num_bytes, |
| 100 bool all_or_none) = 0; | 101 bool all_or_none) = 0; |
| 101 virtual MojoResult ProducerBeginWriteDataImplNoLock( | 102 virtual MojoResult ProducerBeginWriteDataImplNoLock( |
| 102 void** buffer, | 103 void** buffer, |
| 103 uint32_t* buffer_num_bytes, | 104 uint32_t* buffer_num_bytes, |
| 104 bool all_or_none) = 0; | 105 bool all_or_none) = 0; |
| 105 virtual MojoResult ProducerEndWriteDataImplNoLock( | 106 virtual MojoResult ProducerEndWriteDataImplNoLock( |
| 106 uint32_t num_bytes_written) = 0; | 107 uint32_t num_bytes_written) = 0; |
| 107 // Note: A producer should not be writable during a two-phase write. | 108 // Note: A producer should not be writable during a two-phase write. |
| 108 virtual MojoWaitFlags ProducerSatisfiedFlagsNoLock() = 0; | 109 virtual WaitFlagsState ProducerGetWaitFlagsStateNoLock() const = 0; |
| 109 virtual MojoWaitFlags ProducerSatisfiableFlagsNoLock() = 0; | |
| 110 | 110 |
| 111 virtual void ConsumerCloseImplNoLock() = 0; | 111 virtual void ConsumerCloseImplNoLock() = 0; |
| 112 // |*num_bytes| will be a nonzero multiple of |element_num_bytes_|. | 112 // |*num_bytes| will be a nonzero multiple of |element_num_bytes_|. |
| 113 virtual MojoResult ConsumerReadDataImplNoLock(void* elements, | 113 virtual MojoResult ConsumerReadDataImplNoLock(void* elements, |
| 114 uint32_t* num_bytes, | 114 uint32_t* num_bytes, |
| 115 bool all_or_none) = 0; | 115 bool all_or_none) = 0; |
| 116 virtual MojoResult ConsumerDiscardDataImplNoLock(uint32_t* num_bytes, | 116 virtual MojoResult ConsumerDiscardDataImplNoLock(uint32_t* num_bytes, |
| 117 bool all_or_none) = 0; | 117 bool all_or_none) = 0; |
| 118 // |*num_bytes| will be a nonzero multiple of |element_num_bytes_|. | 118 // |*num_bytes| will be a nonzero multiple of |element_num_bytes_|. |
| 119 virtual MojoResult ConsumerQueryDataImplNoLock(uint32_t* num_bytes) = 0; | 119 virtual MojoResult ConsumerQueryDataImplNoLock(uint32_t* num_bytes) = 0; |
| 120 virtual MojoResult ConsumerBeginReadDataImplNoLock(const void** buffer, | 120 virtual MojoResult ConsumerBeginReadDataImplNoLock(const void** buffer, |
| 121 uint32_t* buffer_num_bytes, | 121 uint32_t* buffer_num_bytes, |
| 122 bool all_or_none) = 0; | 122 bool all_or_none) = 0; |
| 123 virtual MojoResult ConsumerEndReadDataImplNoLock(uint32_t num_bytes_read) = 0; | 123 virtual MojoResult ConsumerEndReadDataImplNoLock(uint32_t num_bytes_read) = 0; |
| 124 // Note: A consumer should not be writable during a two-phase read. | 124 // Note: A consumer should not be writable during a two-phase read. |
| 125 virtual MojoWaitFlags ConsumerSatisfiedFlagsNoLock() = 0; | 125 virtual WaitFlagsState ConsumerGetWaitFlagsStateNoLock() const = 0; |
| 126 virtual MojoWaitFlags ConsumerSatisfiableFlagsNoLock() = 0; | |
| 127 | 126 |
| 128 // Thread-safe and fast (they don't take the lock): | 127 // Thread-safe and fast (they don't take the lock): |
| 129 bool may_discard() const { return may_discard_; } | 128 bool may_discard() const { return may_discard_; } |
| 130 size_t element_num_bytes() const { return element_num_bytes_; } | 129 size_t element_num_bytes() const { return element_num_bytes_; } |
| 131 size_t capacity_num_bytes() const { return capacity_num_bytes_; } | 130 size_t capacity_num_bytes() const { return capacity_num_bytes_; } |
| 132 | 131 |
| 133 // Must be called under lock. | 132 // Must be called under lock. |
| 134 bool producer_open_no_lock() const { | 133 bool producer_open_no_lock() const { |
| 135 lock_.AssertAcquired(); | 134 lock_.AssertAcquired(); |
| 136 return producer_open_; | 135 return producer_open_; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 uint32_t producer_two_phase_max_num_bytes_written_; | 192 uint32_t producer_two_phase_max_num_bytes_written_; |
| 194 uint32_t consumer_two_phase_max_num_bytes_read_; | 193 uint32_t consumer_two_phase_max_num_bytes_read_; |
| 195 | 194 |
| 196 DISALLOW_COPY_AND_ASSIGN(DataPipe); | 195 DISALLOW_COPY_AND_ASSIGN(DataPipe); |
| 197 }; | 196 }; |
| 198 | 197 |
| 199 } // namespace system | 198 } // namespace system |
| 200 } // namespace mojo | 199 } // namespace mojo |
| 201 | 200 |
| 202 #endif // MOJO_SYSTEM_DATA_PIPE_H_ | 201 #endif // MOJO_SYSTEM_DATA_PIPE_H_ |
| OLD | NEW |