Chromium Code Reviews| 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..53de487b6780fa595d9b27a86a616fa8c42e4083 100644 |
| --- a/mojo/edk/system/local_data_pipe_impl.h |
| +++ b/mojo/edk/system/local_data_pipe_impl.h |
| @@ -7,91 +7,84 @@ |
| #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. This class's methods, other than |
| +// the constructor and destructor, are always protected by |DataPipe|'s |lock_|. |
| +class MOJO_SYSTEM_IMPL_EXPORT LocalDataPipeImpl : public DataPipeImpl { |
| public: |
| // |validated_options| should be the output of |DataPipe::ValidateOptions()|. |
|
viettrungluu
2015/02/19 19:08:46
Oops, this comment was stale too.
|
| // 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( |
| + static DataPipe* Create(const MojoCreateDataPipeOptions& validated_options); |
|
yzshen1
2015/02/19 18:27:11
nit: It seems a little bit unusual for a static Cr
|
| + |
| + 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_; |