Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(841)

Unified Diff: mojo/edk/system/local_data_pipe_impl.h

Issue 926553006: Make DataPipe own an impl. (Closed) Base URL: https://github.com/domokit/mojo.git@local_data_pipe_impl_1
Patch Set: DataPipe::CreateLocal() Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/edk/system/data_pipe_impl.h ('k') | mojo/edk/system/local_data_pipe_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_;
« no previous file with comments | « mojo/edk/system/data_pipe_impl.h ('k') | mojo/edk/system/local_data_pipe_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698