Index: mojo/edk/system/local_data_pipe_impl.h |
diff --git a/mojo/edk/system/local_data_pipe_impl.h b/mojo/edk/system/local_data_pipe_impl.h |
index c241366c1c25b0bb1abfd9e32061b04268fe09d0..14defcbe5593c6cbf02a7e646b7397057bbc3d9a 100644 |
--- a/mojo/edk/system/local_data_pipe_impl.h |
+++ b/mojo/edk/system/local_data_pipe_impl.h |
@@ -7,91 +7,79 @@ |
#include "base/macros.h" |
#include "base/memory/aligned_memory.h" |
-#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
-#include "mojo/edk/system/data_pipe.h" |
+#include "mojo/edk/system/data_pipe_impl.h" |
#include "mojo/edk/system/system_impl_export.h" |
namespace mojo { |
namespace system { |
+class DataPipe; |
+ |
// |LocalDataPipeImpl| is a subclass that "implements" |DataPipe| for data pipes |
-// whose producer and consumer are both local. This class is thread-safe (with |
-// protection provided by |DataPipe|'s |lock_|. |
-class MOJO_SYSTEM_IMPL_EXPORT LocalDataPipeImpl : public DataPipe { |
+// whose producer and consumer are both local. See |DataPipeImpl| for more |
+// details. |
+class MOJO_SYSTEM_IMPL_EXPORT LocalDataPipeImpl : public DataPipeImpl { |
public: |
- // |validated_options| should be the output of |DataPipe::ValidateOptions()|. |
- // In particular: |struct_size| is ignored (so |validated_options| must be the |
- // current version of the struct) and |capacity_num_bytes| must be nonzero. |
- explicit LocalDataPipeImpl( |
- const MojoCreateDataPipeOptions& validated_options); |
- |
- private: |
- friend class base::RefCountedThreadSafe<LocalDataPipeImpl>; |
+ LocalDataPipeImpl(); |
~LocalDataPipeImpl() override; |
- // |DataPipe| implementation: |
- void ProducerCloseImplNoLock() override; |
- MojoResult ProducerWriteDataImplNoLock( |
- UserPointer<const void> elements, |
- UserPointer<uint32_t> num_bytes, |
- uint32_t max_num_bytes_to_write, |
- uint32_t min_num_bytes_to_write) override; |
- MojoResult ProducerBeginWriteDataImplNoLock( |
- UserPointer<void*> buffer, |
- UserPointer<uint32_t> buffer_num_bytes, |
- uint32_t min_num_bytes_to_write) override; |
- MojoResult ProducerEndWriteDataImplNoLock( |
- uint32_t num_bytes_written) override; |
- HandleSignalsState ProducerGetHandleSignalsStateImplNoLock() const override; |
- void ProducerStartSerializeImplNoLock(Channel* channel, |
- size_t* max_size, |
- size_t* max_platform_handles) override; |
- bool ProducerEndSerializeImplNoLock( |
+ private: |
+ // |DataPipeImpl| implementation: |
+ void ProducerClose() override; |
+ MojoResult ProducerWriteData(UserPointer<const void> elements, |
+ UserPointer<uint32_t> num_bytes, |
+ uint32_t max_num_bytes_to_write, |
+ uint32_t min_num_bytes_to_write) override; |
+ MojoResult ProducerBeginWriteData(UserPointer<void*> buffer, |
+ UserPointer<uint32_t> buffer_num_bytes, |
+ uint32_t min_num_bytes_to_write) override; |
+ MojoResult ProducerEndWriteData(uint32_t num_bytes_written) override; |
+ HandleSignalsState ProducerGetHandleSignalsState() const override; |
+ void ProducerStartSerialize(Channel* channel, |
+ size_t* max_size, |
+ size_t* max_platform_handles) override; |
+ bool ProducerEndSerialize( |
Channel* channel, |
void* destination, |
size_t* actual_size, |
embedder::PlatformHandleVector* platform_handles) override; |
- void ConsumerCloseImplNoLock() override; |
- MojoResult ConsumerReadDataImplNoLock(UserPointer<void> elements, |
- UserPointer<uint32_t> num_bytes, |
- uint32_t max_num_bytes_to_read, |
- uint32_t min_num_bytes_to_read, |
- bool peek) override; |
- MojoResult ConsumerDiscardDataImplNoLock( |
- UserPointer<uint32_t> num_bytes, |
- uint32_t max_num_bytes_to_discard, |
- uint32_t min_num_bytes_to_discard) override; |
- MojoResult ConsumerQueryDataImplNoLock( |
- UserPointer<uint32_t> num_bytes) override; |
- MojoResult ConsumerBeginReadDataImplNoLock( |
- UserPointer<const void*> buffer, |
- UserPointer<uint32_t> buffer_num_bytes, |
- uint32_t min_num_bytes_to_read) override; |
- MojoResult ConsumerEndReadDataImplNoLock(uint32_t num_bytes_read) override; |
- HandleSignalsState ConsumerGetHandleSignalsStateImplNoLock() const override; |
- void ConsumerStartSerializeImplNoLock(Channel* channel, |
- size_t* max_size, |
- size_t* max_platform_handles) override; |
- bool ConsumerEndSerializeImplNoLock( |
+ void ConsumerClose() override; |
+ MojoResult ConsumerReadData(UserPointer<void> elements, |
+ UserPointer<uint32_t> num_bytes, |
+ uint32_t max_num_bytes_to_read, |
+ uint32_t min_num_bytes_to_read, |
+ bool peek) override; |
+ MojoResult ConsumerDiscardData(UserPointer<uint32_t> num_bytes, |
+ uint32_t max_num_bytes_to_discard, |
+ uint32_t min_num_bytes_to_discard) override; |
+ MojoResult ConsumerQueryData(UserPointer<uint32_t> num_bytes) override; |
+ MojoResult ConsumerBeginReadData(UserPointer<const void*> buffer, |
+ UserPointer<uint32_t> buffer_num_bytes, |
+ uint32_t min_num_bytes_to_read) override; |
+ MojoResult ConsumerEndReadData(uint32_t num_bytes_read) override; |
+ HandleSignalsState ConsumerGetHandleSignalsState() const override; |
+ void ConsumerStartSerialize(Channel* channel, |
+ size_t* max_size, |
+ size_t* max_platform_handles) override; |
+ bool ConsumerEndSerialize( |
Channel* channel, |
void* destination, |
size_t* actual_size, |
embedder::PlatformHandleVector* platform_handles) override; |
- void EnsureBufferNoLock(); |
- void DestroyBufferNoLock(); |
+ void EnsureBuffer(); |
+ void DestroyBuffer(); |
// Get the maximum (single) write/read size right now (in number of elements); |
// result fits in a |uint32_t|. |
- size_t GetMaxNumBytesToWriteNoLock(); |
- size_t GetMaxNumBytesToReadNoLock(); |
+ size_t GetMaxNumBytesToWrite(); |
+ size_t GetMaxNumBytesToRead(); |
// Marks the given number of bytes as consumed/discarded. |num_bytes| must be |
// greater than |current_num_bytes_|. |
- void MarkDataAsConsumedNoLock(size_t num_bytes); |
+ void MarkDataAsConsumed(size_t num_bytes); |
- // The members below are protected by |DataPipe|'s |lock_|: |
scoped_ptr<char, base::AlignedFreeDeleter> buffer_; |
// Circular buffer. |
size_t start_index_; |