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

Side by Side Diff: mojo/system/handle_table.cc

Issue 502573006: Remove implicit conversions from scoped_refptr to T* in mojo/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/system/handle_table.h" 5 #include "mojo/system/handle_table.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "mojo/system/constants.h" 9 #include "mojo/system/constants.h"
10 #include "mojo/system/dispatcher.h" 10 #include "mojo/system/dispatcher.h"
(...skipping 19 matching lines...) Expand all
30 // This should usually not be reached (the only instance should be owned by 30 // This should usually not be reached (the only instance should be owned by
31 // the singleton |Core|, which lives forever), except in tests. 31 // the singleton |Core|, which lives forever), except in tests.
32 } 32 }
33 33
34 Dispatcher* HandleTable::GetDispatcher(MojoHandle handle) { 34 Dispatcher* HandleTable::GetDispatcher(MojoHandle handle) {
35 DCHECK_NE(handle, MOJO_HANDLE_INVALID); 35 DCHECK_NE(handle, MOJO_HANDLE_INVALID);
36 36
37 HandleToEntryMap::iterator it = handle_to_entry_map_.find(handle); 37 HandleToEntryMap::iterator it = handle_to_entry_map_.find(handle);
38 if (it == handle_to_entry_map_.end()) 38 if (it == handle_to_entry_map_.end())
39 return NULL; 39 return NULL;
40 return it->second.dispatcher; 40 return it->second.dispatcher.get();
41 } 41 }
42 42
43 MojoResult HandleTable::GetAndRemoveDispatcher( 43 MojoResult HandleTable::GetAndRemoveDispatcher(
44 MojoHandle handle, 44 MojoHandle handle,
45 scoped_refptr<Dispatcher>* dispatcher) { 45 scoped_refptr<Dispatcher>* dispatcher) {
46 DCHECK_NE(handle, MOJO_HANDLE_INVALID); 46 DCHECK_NE(handle, MOJO_HANDLE_INVALID);
47 DCHECK(dispatcher); 47 DCHECK(dispatcher);
48 48
49 HandleToEntryMap::iterator it = handle_to_entry_map_.find(handle); 49 HandleToEntryMap::iterator it = handle_to_entry_map_.find(handle);
50 if (it == handle_to_entry_map_.end()) 50 if (it == handle_to_entry_map_.end())
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 COMPILE_ASSERT( 82 COMPILE_ASSERT(
83 static_cast<uint64_t>(kMaxHandleTableSize) + kMaxMessageNumHandles < 83 static_cast<uint64_t>(kMaxHandleTableSize) + kMaxMessageNumHandles <
84 (sizeof(size_t) == 8 ? kuint64max 84 (sizeof(size_t) == 8 ? kuint64max
85 : static_cast<uint64_t>(kuint32max)), 85 : static_cast<uint64_t>(kuint32max)),
86 addition_may_overflow); 86 addition_may_overflow);
87 87
88 if (handle_to_entry_map_.size() + dispatchers.size() > kMaxHandleTableSize) 88 if (handle_to_entry_map_.size() + dispatchers.size() > kMaxHandleTableSize)
89 return false; 89 return false;
90 90
91 for (size_t i = 0; i < dispatchers.size(); i++) { 91 for (size_t i = 0; i < dispatchers.size(); i++) {
92 if (dispatchers[i]) { 92 if (dispatchers[i].get()) {
93 handles[i] = AddDispatcherNoSizeCheck(dispatchers[i]); 93 handles[i] = AddDispatcherNoSizeCheck(dispatchers[i]);
94 } else { 94 } else {
95 LOG(WARNING) << "Invalid dispatcher at index " << i; 95 LOG(WARNING) << "Invalid dispatcher at index " << i;
96 handles[i] = MOJO_HANDLE_INVALID; 96 handles[i] = MOJO_HANDLE_INVALID;
97 } 97 }
98 } 98 }
99 return true; 99 return true;
100 } 100 }
101 101
102 MojoResult HandleTable::MarkBusyAndStartTransport( 102 MojoResult HandleTable::MarkBusyAndStartTransport(
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 (*transports)[j].End(); 179 (*transports)[j].End();
180 } 180 }
181 return error_result; 181 return error_result;
182 } 182 }
183 183
184 return MOJO_RESULT_OK; 184 return MOJO_RESULT_OK;
185 } 185 }
186 186
187 MojoHandle HandleTable::AddDispatcherNoSizeCheck( 187 MojoHandle HandleTable::AddDispatcherNoSizeCheck(
188 const scoped_refptr<Dispatcher>& dispatcher) { 188 const scoped_refptr<Dispatcher>& dispatcher) {
189 DCHECK(dispatcher); 189 DCHECK(dispatcher.get());
190 DCHECK_LT(handle_to_entry_map_.size(), kMaxHandleTableSize); 190 DCHECK_LT(handle_to_entry_map_.size(), kMaxHandleTableSize);
191 DCHECK_NE(next_handle_, MOJO_HANDLE_INVALID); 191 DCHECK_NE(next_handle_, MOJO_HANDLE_INVALID);
192 192
193 // TODO(vtl): Maybe we want to do something different/smarter. (Or maybe try 193 // TODO(vtl): Maybe we want to do something different/smarter. (Or maybe try
194 // assigning randomly?) 194 // assigning randomly?)
195 while (handle_to_entry_map_.find(next_handle_) != 195 while (handle_to_entry_map_.find(next_handle_) !=
196 handle_to_entry_map_.end()) { 196 handle_to_entry_map_.end()) {
197 next_handle_++; 197 next_handle_++;
198 if (next_handle_ == MOJO_HANDLE_INVALID) 198 if (next_handle_ == MOJO_HANDLE_INVALID)
199 next_handle_++; 199 next_handle_++;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 for (uint32_t i = 0; i < num_handles; i++) { 231 for (uint32_t i = 0; i < num_handles; i++) {
232 HandleToEntryMap::iterator it = handle_to_entry_map_.find(handles[i]); 232 HandleToEntryMap::iterator it = handle_to_entry_map_.find(handles[i]);
233 DCHECK(it != handle_to_entry_map_.end()); 233 DCHECK(it != handle_to_entry_map_.end());
234 DCHECK(it->second.busy); 234 DCHECK(it->second.busy);
235 it->second.busy = false; 235 it->second.busy = false;
236 } 236 }
237 } 237 }
238 238
239 } // namespace system 239 } // namespace system
240 } // namespace mojo 240 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698