| Index: mojo/system/core.cc
|
| diff --git a/mojo/system/core_impl.cc b/mojo/system/core.cc
|
| similarity index 82%
|
| rename from mojo/system/core_impl.cc
|
| rename to mojo/system/core.cc
|
| index 12c1be5756977212da38be4eccd4cfc2443bf09f..dd8fb573c2c5e6910347e7be8a8133286756e85b 100644
|
| --- a/mojo/system/core_impl.cc
|
| +++ b/mojo/system/core.cc
|
| @@ -2,12 +2,13 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "mojo/system/core_impl.h"
|
| +#include "mojo/system/core.h"
|
|
|
| #include <vector>
|
|
|
| #include "base/logging.h"
|
| #include "base/time/time.h"
|
| +#include "mojo/public/c/system/core.h"
|
| #include "mojo/system/constants.h"
|
| #include "mojo/system/data_pipe.h"
|
| #include "mojo/system/data_pipe_consumer_dispatcher.h"
|
| @@ -26,11 +27,11 @@ namespace system {
|
|
|
| // Implementation notes
|
| //
|
| -// Mojo primitives are implemented by the singleton |CoreImpl| object. Most
|
| +// Mojo primitives are implemented by the singleton |Core| object. Most
|
| // calls are for a "primary" handle (the first argument).
|
| -// |CoreImpl::GetDispatcher()| is used to look up a |Dispatcher| object for a
|
| +// |Core::GetDispatcher()| is used to look up a |Dispatcher| object for a
|
| // given handle. That object implements most primitives for that object. The
|
| -// wait primitives are not attached to objects and are implemented by |CoreImpl|
|
| +// wait primitives are not attached to objects and are implemented by |Core|
|
| // itself.
|
| //
|
| // Some objects have multiple handles associated to them, e.g., message pipes
|
| @@ -73,39 +74,37 @@ namespace system {
|
| // - Locks at the "INF" level may not have any locks taken while they are
|
| // held.
|
|
|
| -CoreImpl::HandleTableEntry::HandleTableEntry()
|
| +Core::HandleTableEntry::HandleTableEntry()
|
| : busy(false) {
|
| }
|
|
|
| -CoreImpl::HandleTableEntry::HandleTableEntry(
|
| +Core::HandleTableEntry::HandleTableEntry(
|
| const scoped_refptr<Dispatcher>& dispatcher)
|
| : dispatcher(dispatcher),
|
| busy(false) {
|
| }
|
|
|
| -CoreImpl::HandleTableEntry::~HandleTableEntry() {
|
| +Core::HandleTableEntry::~HandleTableEntry() {
|
| DCHECK(!busy);
|
| }
|
|
|
| -CoreImpl::CoreImpl() {
|
| +Core::Core() {
|
| }
|
|
|
| -CoreImpl::~CoreImpl() {
|
| - // This should usually not be reached (the singleton lives forever), except in
|
| - // tests.
|
| +Core::~Core() {
|
| }
|
|
|
| -MojoHandle CoreImpl::AddDispatcher(
|
| +MojoHandle Core::AddDispatcher(
|
| const scoped_refptr<Dispatcher>& dispatcher) {
|
| base::AutoLock locker(handle_table_lock_);
|
| return handle_table_.AddDispatcher(dispatcher);
|
| }
|
|
|
| -MojoTimeTicks CoreImpl::GetTimeTicksNow() {
|
| +MojoTimeTicks Core::GetTimeTicksNow() {
|
| return base::TimeTicks::Now().ToInternalValue();
|
| }
|
|
|
| -MojoResult CoreImpl::Close(MojoHandle handle) {
|
| +MojoResult Core::Close(MojoHandle handle) {
|
| if (handle == MOJO_HANDLE_INVALID)
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
|
|
| @@ -125,16 +124,16 @@ MojoResult CoreImpl::Close(MojoHandle handle) {
|
| return dispatcher->Close();
|
| }
|
|
|
| -MojoResult CoreImpl::Wait(MojoHandle handle,
|
| - MojoWaitFlags flags,
|
| - MojoDeadline deadline) {
|
| +MojoResult Core::Wait(MojoHandle handle,
|
| + MojoWaitFlags flags,
|
| + MojoDeadline deadline) {
|
| return WaitManyInternal(&handle, &flags, 1, deadline);
|
| }
|
|
|
| -MojoResult CoreImpl::WaitMany(const MojoHandle* handles,
|
| - const MojoWaitFlags* flags,
|
| - uint32_t num_handles,
|
| - MojoDeadline deadline) {
|
| +MojoResult Core::WaitMany(const MojoHandle* handles,
|
| + const MojoWaitFlags* flags,
|
| + uint32_t num_handles,
|
| + MojoDeadline deadline) {
|
| if (!VerifyUserPointer<MojoHandle>(handles, num_handles))
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
| if (!VerifyUserPointer<MojoWaitFlags>(flags, num_handles))
|
| @@ -146,8 +145,8 @@ MojoResult CoreImpl::WaitMany(const MojoHandle* handles,
|
| return WaitManyInternal(handles, flags, num_handles, deadline);
|
| }
|
|
|
| -MojoResult CoreImpl::CreateMessagePipe(MojoHandle* message_pipe_handle0,
|
| - MojoHandle* message_pipe_handle1) {
|
| +MojoResult Core::CreateMessagePipe(MojoHandle* message_pipe_handle0,
|
| + MojoHandle* message_pipe_handle1) {
|
| if (!VerifyUserPointer<MojoHandle>(message_pipe_handle0, 1))
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
| if (!VerifyUserPointer<MojoHandle>(message_pipe_handle1, 1))
|
| @@ -185,12 +184,12 @@ MojoResult CoreImpl::CreateMessagePipe(MojoHandle* message_pipe_handle0,
|
| // isn't done, in the in-process case, calls on the old handle may complete
|
| // after the the message has been received and a new handle created (and
|
| // possibly even after calls have been made on the new handle).
|
| -MojoResult CoreImpl::WriteMessage(MojoHandle message_pipe_handle,
|
| - const void* bytes,
|
| - uint32_t num_bytes,
|
| - const MojoHandle* handles,
|
| - uint32_t num_handles,
|
| - MojoWriteMessageFlags flags) {
|
| +MojoResult Core::WriteMessage(MojoHandle message_pipe_handle,
|
| + const void* bytes,
|
| + uint32_t num_bytes,
|
| + const MojoHandle* handles,
|
| + uint32_t num_handles,
|
| + MojoWriteMessageFlags flags) {
|
| scoped_refptr<Dispatcher> dispatcher(GetDispatcher(message_pipe_handle));
|
| if (!dispatcher.get())
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
| @@ -249,12 +248,12 @@ MojoResult CoreImpl::WriteMessage(MojoHandle message_pipe_handle,
|
| return rv;
|
| }
|
|
|
| -MojoResult CoreImpl::ReadMessage(MojoHandle message_pipe_handle,
|
| - void* bytes,
|
| - uint32_t* num_bytes,
|
| - MojoHandle* handles,
|
| - uint32_t* num_handles,
|
| - MojoReadMessageFlags flags) {
|
| +MojoResult Core::ReadMessage(MojoHandle message_pipe_handle,
|
| + void* bytes,
|
| + uint32_t* num_bytes,
|
| + MojoHandle* handles,
|
| + uint32_t* num_handles,
|
| + MojoReadMessageFlags flags) {
|
| scoped_refptr<Dispatcher> dispatcher(GetDispatcher(message_pipe_handle));
|
| if (!dispatcher.get())
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
| @@ -298,9 +297,9 @@ MojoResult CoreImpl::ReadMessage(MojoHandle message_pipe_handle,
|
| return rv;
|
| }
|
|
|
| -MojoResult CoreImpl::CreateDataPipe(const MojoCreateDataPipeOptions* options,
|
| - MojoHandle* data_pipe_producer_handle,
|
| - MojoHandle* data_pipe_consumer_handle) {
|
| +MojoResult Core::CreateDataPipe(const MojoCreateDataPipeOptions* options,
|
| + MojoHandle* data_pipe_producer_handle,
|
| + MojoHandle* data_pipe_consumer_handle) {
|
| if (options) {
|
| // The |struct_size| field must be valid to read.
|
| if (!VerifyUserPointer<uint32_t>(&options->struct_size, 1))
|
| @@ -348,10 +347,10 @@ MojoResult CoreImpl::CreateDataPipe(const MojoCreateDataPipeOptions* options,
|
| return MOJO_RESULT_OK;
|
| }
|
|
|
| -MojoResult CoreImpl::WriteData(MojoHandle data_pipe_producer_handle,
|
| - const void* elements,
|
| - uint32_t* num_bytes,
|
| - MojoWriteDataFlags flags) {
|
| +MojoResult Core::WriteData(MojoHandle data_pipe_producer_handle,
|
| + const void* elements,
|
| + uint32_t* num_bytes,
|
| + MojoWriteDataFlags flags) {
|
| scoped_refptr<Dispatcher> dispatcher(
|
| GetDispatcher(data_pipe_producer_handle));
|
| if (!dispatcher.get())
|
| @@ -360,10 +359,10 @@ MojoResult CoreImpl::WriteData(MojoHandle data_pipe_producer_handle,
|
| return dispatcher->WriteData(elements, num_bytes, flags);
|
| }
|
|
|
| -MojoResult CoreImpl::BeginWriteData(MojoHandle data_pipe_producer_handle,
|
| - void** buffer,
|
| - uint32_t* buffer_num_bytes,
|
| - MojoWriteDataFlags flags) {
|
| +MojoResult Core::BeginWriteData(MojoHandle data_pipe_producer_handle,
|
| + void** buffer,
|
| + uint32_t* buffer_num_bytes,
|
| + MojoWriteDataFlags flags) {
|
| scoped_refptr<Dispatcher> dispatcher(
|
| GetDispatcher(data_pipe_producer_handle));
|
| if (!dispatcher.get())
|
| @@ -372,8 +371,8 @@ MojoResult CoreImpl::BeginWriteData(MojoHandle data_pipe_producer_handle,
|
| return dispatcher->BeginWriteData(buffer, buffer_num_bytes, flags);
|
| }
|
|
|
| -MojoResult CoreImpl::EndWriteData(MojoHandle data_pipe_producer_handle,
|
| - uint32_t num_bytes_written) {
|
| +MojoResult Core::EndWriteData(MojoHandle data_pipe_producer_handle,
|
| + uint32_t num_bytes_written) {
|
| scoped_refptr<Dispatcher> dispatcher(
|
| GetDispatcher(data_pipe_producer_handle));
|
| if (!dispatcher.get())
|
| @@ -382,10 +381,10 @@ MojoResult CoreImpl::EndWriteData(MojoHandle data_pipe_producer_handle,
|
| return dispatcher->EndWriteData(num_bytes_written);
|
| }
|
|
|
| -MojoResult CoreImpl::ReadData(MojoHandle data_pipe_consumer_handle,
|
| - void* elements,
|
| - uint32_t* num_bytes,
|
| - MojoReadDataFlags flags) {
|
| +MojoResult Core::ReadData(MojoHandle data_pipe_consumer_handle,
|
| + void* elements,
|
| + uint32_t* num_bytes,
|
| + MojoReadDataFlags flags) {
|
| scoped_refptr<Dispatcher> dispatcher(
|
| GetDispatcher(data_pipe_consumer_handle));
|
| if (!dispatcher.get())
|
| @@ -394,10 +393,10 @@ MojoResult CoreImpl::ReadData(MojoHandle data_pipe_consumer_handle,
|
| return dispatcher->ReadData(elements, num_bytes, flags);
|
| }
|
|
|
| -MojoResult CoreImpl::BeginReadData(MojoHandle data_pipe_consumer_handle,
|
| - const void** buffer,
|
| - uint32_t* buffer_num_bytes,
|
| - MojoReadDataFlags flags) {
|
| +MojoResult Core::BeginReadData(MojoHandle data_pipe_consumer_handle,
|
| + const void** buffer,
|
| + uint32_t* buffer_num_bytes,
|
| + MojoReadDataFlags flags) {
|
| scoped_refptr<Dispatcher> dispatcher(
|
| GetDispatcher(data_pipe_consumer_handle));
|
| if (!dispatcher.get())
|
| @@ -406,8 +405,8 @@ MojoResult CoreImpl::BeginReadData(MojoHandle data_pipe_consumer_handle,
|
| return dispatcher->BeginReadData(buffer, buffer_num_bytes, flags);
|
| }
|
|
|
| -MojoResult CoreImpl::EndReadData(MojoHandle data_pipe_consumer_handle,
|
| - uint32_t num_bytes_read) {
|
| +MojoResult Core::EndReadData(MojoHandle data_pipe_consumer_handle,
|
| + uint32_t num_bytes_read) {
|
| scoped_refptr<Dispatcher> dispatcher(
|
| GetDispatcher(data_pipe_consumer_handle));
|
| if (!dispatcher.get())
|
| @@ -416,7 +415,7 @@ MojoResult CoreImpl::EndReadData(MojoHandle data_pipe_consumer_handle,
|
| return dispatcher->EndReadData(num_bytes_read);
|
| }
|
|
|
| -MojoResult CoreImpl::CreateSharedBuffer(
|
| +MojoResult Core::CreateSharedBuffer(
|
| const MojoCreateSharedBufferOptions* options,
|
| uint64_t num_bytes,
|
| MojoHandle* shared_buffer_handle) {
|
| @@ -456,7 +455,7 @@ MojoResult CoreImpl::CreateSharedBuffer(
|
| return MOJO_RESULT_OK;
|
| }
|
|
|
| -MojoResult CoreImpl::DuplicateBufferHandle(
|
| +MojoResult Core::DuplicateBufferHandle(
|
| MojoHandle buffer_handle,
|
| const MojoDuplicateBufferHandleOptions* options,
|
| MojoHandle* new_buffer_handle) {
|
| @@ -485,11 +484,11 @@ MojoResult CoreImpl::DuplicateBufferHandle(
|
| return MOJO_RESULT_OK;
|
| }
|
|
|
| -MojoResult CoreImpl::MapBuffer(MojoHandle buffer_handle,
|
| - uint64_t offset,
|
| - uint64_t num_bytes,
|
| - void** buffer,
|
| - MojoMapBufferFlags flags) {
|
| +MojoResult Core::MapBuffer(MojoHandle buffer_handle,
|
| + uint64_t offset,
|
| + uint64_t num_bytes,
|
| + void** buffer,
|
| + MojoMapBufferFlags flags) {
|
| scoped_refptr<Dispatcher> dispatcher(GetDispatcher(buffer_handle));
|
| if (!dispatcher.get())
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
| @@ -515,12 +514,12 @@ MojoResult CoreImpl::MapBuffer(MojoHandle buffer_handle,
|
| return MOJO_RESULT_OK;
|
| }
|
|
|
| -MojoResult CoreImpl::UnmapBuffer(void* buffer) {
|
| +MojoResult Core::UnmapBuffer(void* buffer) {
|
| base::AutoLock locker(mapping_table_lock_);
|
| return mapping_table_.RemoveMapping(buffer);
|
| }
|
|
|
| -scoped_refptr<Dispatcher> CoreImpl::GetDispatcher(MojoHandle handle) {
|
| +scoped_refptr<Dispatcher> Core::GetDispatcher(MojoHandle handle) {
|
| if (handle == MOJO_HANDLE_INVALID)
|
| return NULL;
|
|
|
| @@ -532,10 +531,10 @@ scoped_refptr<Dispatcher> CoreImpl::GetDispatcher(MojoHandle handle) {
|
| // different flags may be specified.
|
| // TODO(vtl): This incurs a performance cost in |RemoveWaiter()|. Analyze this
|
| // more carefully and address it if necessary.
|
| -MojoResult CoreImpl::WaitManyInternal(const MojoHandle* handles,
|
| - const MojoWaitFlags* flags,
|
| - uint32_t num_handles,
|
| - MojoDeadline deadline) {
|
| +MojoResult Core::WaitManyInternal(const MojoHandle* handles,
|
| + const MojoWaitFlags* flags,
|
| + uint32_t num_handles,
|
| + MojoDeadline deadline) {
|
| DCHECK_GT(num_handles, 0u);
|
|
|
| std::vector<scoped_refptr<Dispatcher> > dispatchers;
|
|
|