| Index: mojo/edk/system/core.cc
|
| diff --git a/mojo/edk/system/core.cc b/mojo/edk/system/core.cc
|
| index 30f7085072c9bbe02245fa98627022dafc701da3..ae729a95bade135215e07c659ff83257c693139e 100644
|
| --- a/mojo/edk/system/core.cc
|
| +++ b/mojo/edk/system/core.cc
|
| @@ -85,21 +85,21 @@ Core::Core(embedder::PlatformSupport* platform_support)
|
| Core::~Core() {
|
| }
|
|
|
| -MojoHandle Core::AddDispatcher(const scoped_refptr<Dispatcher>& dispatcher) {
|
| +MojoHandle Core::AddDispatcher(Dispatcher* dispatcher) {
|
| MutexLocker locker(&handle_table_mutex_);
|
| return handle_table_.AddDispatcher(dispatcher);
|
| }
|
|
|
| -scoped_refptr<Dispatcher> Core::GetDispatcher(MojoHandle handle) {
|
| +RefPtr<Dispatcher> Core::GetDispatcher(MojoHandle handle) {
|
| if (handle == MOJO_HANDLE_INVALID)
|
| return nullptr;
|
|
|
| MutexLocker locker(&handle_table_mutex_);
|
| - return handle_table_.GetDispatcher(handle);
|
| + return RefPtr<Dispatcher>(handle_table_.GetDispatcher(handle));
|
| }
|
|
|
| MojoResult Core::GetAndRemoveDispatcher(MojoHandle handle,
|
| - scoped_refptr<Dispatcher>* dispatcher) {
|
| + RefPtr<Dispatcher>* dispatcher) {
|
| if (handle == MOJO_HANDLE_INVALID)
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
|
|
| @@ -110,7 +110,7 @@ MojoResult Core::GetAndRemoveDispatcher(MojoHandle handle,
|
| MojoResult Core::AsyncWait(MojoHandle handle,
|
| MojoHandleSignals signals,
|
| const base::Callback<void(MojoResult)>& callback) {
|
| - scoped_refptr<Dispatcher> dispatcher = GetDispatcher(handle);
|
| + RefPtr<Dispatcher> dispatcher(GetDispatcher(handle));
|
| DCHECK(dispatcher);
|
|
|
| std::unique_ptr<AsyncWaiter> waiter(new AsyncWaiter(callback));
|
| @@ -128,7 +128,7 @@ MojoResult Core::Close(MojoHandle handle) {
|
| if (handle == MOJO_HANDLE_INVALID)
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
|
|
| - scoped_refptr<Dispatcher> dispatcher;
|
| + RefPtr<Dispatcher> dispatcher;
|
| {
|
| MutexLocker locker(&handle_table_mutex_);
|
| MojoResult result =
|
| @@ -204,15 +204,14 @@ MojoResult Core::CreateMessagePipe(
|
| if (result != MOJO_RESULT_OK)
|
| return result;
|
|
|
| - scoped_refptr<MessagePipeDispatcher> dispatcher0 =
|
| - MessagePipeDispatcher::Create(validated_options);
|
| - scoped_refptr<MessagePipeDispatcher> dispatcher1 =
|
| - MessagePipeDispatcher::Create(validated_options);
|
| + auto dispatcher0 = MessagePipeDispatcher::Create(validated_options);
|
| + auto dispatcher1 = MessagePipeDispatcher::Create(validated_options);
|
|
|
| std::pair<MojoHandle, MojoHandle> handle_pair;
|
| {
|
| MutexLocker locker(&handle_table_mutex_);
|
| - handle_pair = handle_table_.AddDispatcherPair(dispatcher0, dispatcher1);
|
| + handle_pair =
|
| + handle_table_.AddDispatcherPair(dispatcher0.get(), dispatcher1.get());
|
| }
|
| if (handle_pair.first == MOJO_HANDLE_INVALID) {
|
| DCHECK_EQ(handle_pair.second, MOJO_HANDLE_INVALID);
|
| @@ -244,7 +243,7 @@ MojoResult Core::WriteMessage(MojoHandle message_pipe_handle,
|
| UserPointer<const MojoHandle> handles,
|
| uint32_t num_handles,
|
| MojoWriteMessageFlags flags) {
|
| - scoped_refptr<Dispatcher> dispatcher(GetDispatcher(message_pipe_handle));
|
| + RefPtr<Dispatcher> dispatcher(GetDispatcher(message_pipe_handle));
|
| if (!dispatcher)
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
|
|
| @@ -311,7 +310,7 @@ MojoResult Core::ReadMessage(MojoHandle message_pipe_handle,
|
| UserPointer<MojoHandle> handles,
|
| UserPointer<uint32_t> num_handles,
|
| MojoReadMessageFlags flags) {
|
| - scoped_refptr<Dispatcher> dispatcher(GetDispatcher(message_pipe_handle));
|
| + RefPtr<Dispatcher> dispatcher(GetDispatcher(message_pipe_handle));
|
| if (!dispatcher)
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
|
|
| @@ -370,16 +369,14 @@ MojoResult Core::CreateDataPipe(
|
| if (result != MOJO_RESULT_OK)
|
| return result;
|
|
|
| - scoped_refptr<DataPipeProducerDispatcher> producer_dispatcher =
|
| - DataPipeProducerDispatcher::Create();
|
| - scoped_refptr<DataPipeConsumerDispatcher> consumer_dispatcher =
|
| - DataPipeConsumerDispatcher::Create();
|
| + auto producer_dispatcher = DataPipeProducerDispatcher::Create();
|
| + auto consumer_dispatcher = DataPipeConsumerDispatcher::Create();
|
|
|
| std::pair<MojoHandle, MojoHandle> handle_pair;
|
| {
|
| MutexLocker locker(&handle_table_mutex_);
|
| - handle_pair = handle_table_.AddDispatcherPair(producer_dispatcher,
|
| - consumer_dispatcher);
|
| + handle_pair = handle_table_.AddDispatcherPair(producer_dispatcher.get(),
|
| + consumer_dispatcher.get());
|
| }
|
| if (handle_pair.first == MOJO_HANDLE_INVALID) {
|
| DCHECK_EQ(handle_pair.second, MOJO_HANDLE_INVALID);
|
| @@ -403,8 +400,7 @@ MojoResult Core::WriteData(MojoHandle data_pipe_producer_handle,
|
| UserPointer<const void> elements,
|
| UserPointer<uint32_t> num_bytes,
|
| MojoWriteDataFlags flags) {
|
| - scoped_refptr<Dispatcher> dispatcher(
|
| - GetDispatcher(data_pipe_producer_handle));
|
| + RefPtr<Dispatcher> dispatcher(GetDispatcher(data_pipe_producer_handle));
|
| if (!dispatcher)
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
|
|
| @@ -415,8 +411,7 @@ MojoResult Core::BeginWriteData(MojoHandle data_pipe_producer_handle,
|
| UserPointer<void*> buffer,
|
| UserPointer<uint32_t> buffer_num_bytes,
|
| MojoWriteDataFlags flags) {
|
| - scoped_refptr<Dispatcher> dispatcher(
|
| - GetDispatcher(data_pipe_producer_handle));
|
| + RefPtr<Dispatcher> dispatcher(GetDispatcher(data_pipe_producer_handle));
|
| if (!dispatcher)
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
|
|
| @@ -425,8 +420,7 @@ MojoResult Core::BeginWriteData(MojoHandle data_pipe_producer_handle,
|
|
|
| MojoResult Core::EndWriteData(MojoHandle data_pipe_producer_handle,
|
| uint32_t num_bytes_written) {
|
| - scoped_refptr<Dispatcher> dispatcher(
|
| - GetDispatcher(data_pipe_producer_handle));
|
| + RefPtr<Dispatcher> dispatcher(GetDispatcher(data_pipe_producer_handle));
|
| if (!dispatcher)
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
|
|
| @@ -437,8 +431,7 @@ MojoResult Core::ReadData(MojoHandle data_pipe_consumer_handle,
|
| UserPointer<void> elements,
|
| UserPointer<uint32_t> num_bytes,
|
| MojoReadDataFlags flags) {
|
| - scoped_refptr<Dispatcher> dispatcher(
|
| - GetDispatcher(data_pipe_consumer_handle));
|
| + RefPtr<Dispatcher> dispatcher(GetDispatcher(data_pipe_consumer_handle));
|
| if (!dispatcher)
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
|
|
| @@ -449,8 +442,7 @@ MojoResult Core::BeginReadData(MojoHandle data_pipe_consumer_handle,
|
| UserPointer<const void*> buffer,
|
| UserPointer<uint32_t> buffer_num_bytes,
|
| MojoReadDataFlags flags) {
|
| - scoped_refptr<Dispatcher> dispatcher(
|
| - GetDispatcher(data_pipe_consumer_handle));
|
| + RefPtr<Dispatcher> dispatcher(GetDispatcher(data_pipe_consumer_handle));
|
| if (!dispatcher)
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
|
|
| @@ -459,8 +451,7 @@ MojoResult Core::BeginReadData(MojoHandle data_pipe_consumer_handle,
|
|
|
| MojoResult Core::EndReadData(MojoHandle data_pipe_consumer_handle,
|
| uint32_t num_bytes_read) {
|
| - scoped_refptr<Dispatcher> dispatcher(
|
| - GetDispatcher(data_pipe_consumer_handle));
|
| + RefPtr<Dispatcher> dispatcher(GetDispatcher(data_pipe_consumer_handle));
|
| if (!dispatcher)
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
|
|
| @@ -477,15 +468,14 @@ MojoResult Core::CreateSharedBuffer(
|
| if (result != MOJO_RESULT_OK)
|
| return result;
|
|
|
| - scoped_refptr<SharedBufferDispatcher> dispatcher;
|
| - result = SharedBufferDispatcher::Create(platform_support_, validated_options,
|
| - num_bytes, &dispatcher);
|
| + auto dispatcher = SharedBufferDispatcher::Create(
|
| + platform_support_, validated_options, num_bytes, &result);
|
| if (result != MOJO_RESULT_OK) {
|
| DCHECK(!dispatcher);
|
| return result;
|
| }
|
|
|
| - MojoHandle h = AddDispatcher(dispatcher);
|
| + MojoHandle h = AddDispatcher(dispatcher.get());
|
| if (h == MOJO_HANDLE_INVALID) {
|
| LOG(ERROR) << "Handle table full";
|
| dispatcher->Close();
|
| @@ -500,21 +490,21 @@ MojoResult Core::DuplicateBufferHandle(
|
| MojoHandle buffer_handle,
|
| UserPointer<const MojoDuplicateBufferHandleOptions> options,
|
| UserPointer<MojoHandle> new_buffer_handle) {
|
| - scoped_refptr<Dispatcher> dispatcher(GetDispatcher(buffer_handle));
|
| + RefPtr<Dispatcher> dispatcher(GetDispatcher(buffer_handle));
|
| if (!dispatcher)
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
|
|
| // Don't verify |options| here; that's the dispatcher's job.
|
| - scoped_refptr<Dispatcher> new_dispatcher;
|
| + RefPtr<Dispatcher> new_dispatcher;
|
| MojoResult result =
|
| dispatcher->DuplicateBufferHandle(options, &new_dispatcher);
|
| if (result != MOJO_RESULT_OK)
|
| return result;
|
|
|
| - MojoHandle new_handle = AddDispatcher(new_dispatcher);
|
| + MojoHandle new_handle = AddDispatcher(new_dispatcher.get());
|
| if (new_handle == MOJO_HANDLE_INVALID) {
|
| LOG(ERROR) << "Handle table full";
|
| - dispatcher->Close();
|
| + new_dispatcher->Close();
|
| return MOJO_RESULT_RESOURCE_EXHAUSTED;
|
| }
|
|
|
| @@ -527,7 +517,7 @@ MojoResult Core::MapBuffer(MojoHandle buffer_handle,
|
| uint64_t num_bytes,
|
| UserPointer<void*> buffer,
|
| MojoMapBufferFlags flags) {
|
| - scoped_refptr<Dispatcher> dispatcher(GetDispatcher(buffer_handle));
|
| + RefPtr<Dispatcher> dispatcher(GetDispatcher(buffer_handle));
|
| if (!dispatcher)
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
|
|
| @@ -570,7 +560,7 @@ MojoResult Core::WaitManyInternal(const MojoHandle* handles,
|
| DispatcherVector dispatchers;
|
| dispatchers.reserve(num_handles);
|
| for (uint32_t i = 0; i < num_handles; i++) {
|
| - scoped_refptr<Dispatcher> dispatcher = GetDispatcher(handles[i]);
|
| + RefPtr<Dispatcher> dispatcher = GetDispatcher(handles[i]);
|
| if (!dispatcher) {
|
| *result_index = i;
|
| return MOJO_RESULT_INVALID_ARGUMENT;
|
|
|