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

Side by Side Diff: mojo/edk/system/core.cc

Issue 1350503004: Some easy conversions of scoped_ptr -> std::unique_ptr in the EDK. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 3 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 unified diff | Download patch
« no previous file with comments | « no previous file | mojo/edk/system/data_pipe.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "mojo/edk/system/core.h" 5 #include "mojo/edk/system/core.h"
6 6
7 #include <memory>
7 #include <vector> 8 #include <vector>
8 9
9 #include "base/logging.h" 10 #include "base/logging.h"
10 #include "mojo/edk/embedder/platform_shared_buffer.h" 11 #include "mojo/edk/embedder/platform_shared_buffer.h"
11 #include "mojo/edk/embedder/platform_support.h" 12 #include "mojo/edk/embedder/platform_support.h"
12 #include "mojo/edk/system/async_waiter.h" 13 #include "mojo/edk/system/async_waiter.h"
13 #include "mojo/edk/system/configuration.h" 14 #include "mojo/edk/system/configuration.h"
14 #include "mojo/edk/system/data_pipe.h" 15 #include "mojo/edk/system/data_pipe.h"
15 #include "mojo/edk/system/data_pipe_consumer_dispatcher.h" 16 #include "mojo/edk/system/data_pipe_consumer_dispatcher.h"
16 #include "mojo/edk/system/data_pipe_producer_dispatcher.h" 17 #include "mojo/edk/system/data_pipe_producer_dispatcher.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 // INF. |Waiter| locks 70 // INF. |Waiter| locks
70 // 71 //
71 // Notes: 72 // Notes:
72 // - While holding a |Dispatcher| lock, you may not unconditionally attempt 73 // - While holding a |Dispatcher| lock, you may not unconditionally attempt
73 // to take another |Dispatcher| lock. (This has consequences on the 74 // to take another |Dispatcher| lock. (This has consequences on the
74 // concurrency semantics of |MojoWriteMessage()| when passing handles.) 75 // concurrency semantics of |MojoWriteMessage()| when passing handles.)
75 // Doing so would lead to deadlock. 76 // Doing so would lead to deadlock.
76 // - Locks at the "INF" level may not have any locks taken while they are 77 // - Locks at the "INF" level may not have any locks taken while they are
77 // held. 78 // held.
78 79
79 // TODO(vtl): This should take a |scoped_ptr<PlatformSupport>| as a parameter.
80 Core::Core(embedder::PlatformSupport* platform_support) 80 Core::Core(embedder::PlatformSupport* platform_support)
81 : platform_support_(platform_support) { 81 : platform_support_(platform_support) {
82 } 82 }
83 83
84 Core::~Core() { 84 Core::~Core() {
85 } 85 }
86 86
87 MojoHandle Core::AddDispatcher(const scoped_refptr<Dispatcher>& dispatcher) { 87 MojoHandle Core::AddDispatcher(const scoped_refptr<Dispatcher>& dispatcher) {
88 MutexLocker locker(&handle_table_mutex_); 88 MutexLocker locker(&handle_table_mutex_);
89 return handle_table_.AddDispatcher(dispatcher); 89 return handle_table_.AddDispatcher(dispatcher);
(...skipping 15 matching lines...) Expand all
105 MutexLocker locker(&handle_table_mutex_); 105 MutexLocker locker(&handle_table_mutex_);
106 return handle_table_.GetAndRemoveDispatcher(handle, dispatcher); 106 return handle_table_.GetAndRemoveDispatcher(handle, dispatcher);
107 } 107 }
108 108
109 MojoResult Core::AsyncWait(MojoHandle handle, 109 MojoResult Core::AsyncWait(MojoHandle handle,
110 MojoHandleSignals signals, 110 MojoHandleSignals signals,
111 const base::Callback<void(MojoResult)>& callback) { 111 const base::Callback<void(MojoResult)>& callback) {
112 scoped_refptr<Dispatcher> dispatcher = GetDispatcher(handle); 112 scoped_refptr<Dispatcher> dispatcher = GetDispatcher(handle);
113 DCHECK(dispatcher); 113 DCHECK(dispatcher);
114 114
115 scoped_ptr<AsyncWaiter> waiter = make_scoped_ptr(new AsyncWaiter(callback)); 115 std::unique_ptr<AsyncWaiter> waiter(new AsyncWaiter(callback));
116 MojoResult rv = dispatcher->AddAwakable(waiter.get(), signals, 0, nullptr); 116 MojoResult rv = dispatcher->AddAwakable(waiter.get(), signals, 0, nullptr);
117 if (rv == MOJO_RESULT_OK) 117 if (rv == MOJO_RESULT_OK)
118 ignore_result(waiter.release()); 118 ignore_result(waiter.release());
119 return rv; 119 return rv;
120 } 120 }
121 121
122 MojoTimeTicks Core::GetTimeTicksNow() { 122 MojoTimeTicks Core::GetTimeTicksNow() {
123 return platform_support_->GetTimeTicksNow(); 123 return platform_support_->GetTimeTicksNow();
124 } 124 }
125 125
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 if (signals_states) { 608 if (signals_states) {
609 for (; i < num_handles; i++) 609 for (; i < num_handles; i++)
610 signals_states[i] = dispatchers[i]->GetHandleSignalsState(); 610 signals_states[i] = dispatchers[i]->GetHandleSignalsState();
611 } 611 }
612 612
613 return rv; 613 return rv;
614 } 614 }
615 615
616 } // namespace system 616 } // namespace system
617 } // namespace mojo 617 } // namespace mojo
OLDNEW
« no previous file with comments | « no previous file | mojo/edk/system/data_pipe.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698