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

Unified Diff: mojo/edk/system/shared_buffer_dispatcher.cc

Issue 1412283002: Convert mojo::system::Dispatcher to use our new refcounting stuff (instead of base's). (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: no change Created 5 years, 2 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/shared_buffer_dispatcher.h ('k') | mojo/edk/system/shared_buffer_dispatcher_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/edk/system/shared_buffer_dispatcher.cc
diff --git a/mojo/edk/system/shared_buffer_dispatcher.cc b/mojo/edk/system/shared_buffer_dispatcher.cc
index d049626329ce129dc22c126e34bc5d79c2ef58f8..8508879a56fa9dc67872f24f391055dec71845e9 100644
--- a/mojo/edk/system/shared_buffer_dispatcher.cc
+++ b/mojo/edk/system/shared_buffer_dispatcher.cc
@@ -61,23 +61,29 @@ MojoResult SharedBufferDispatcher::ValidateCreateOptions(
}
// static
-MojoResult SharedBufferDispatcher::Create(
+RefPtr<SharedBufferDispatcher> SharedBufferDispatcher::Create(
embedder::PlatformSupport* platform_support,
const MojoCreateSharedBufferOptions& /*validated_options*/,
uint64_t num_bytes,
- scoped_refptr<SharedBufferDispatcher>* result) {
- if (!num_bytes)
- return MOJO_RESULT_INVALID_ARGUMENT;
- if (num_bytes > GetConfiguration().max_shared_memory_num_bytes)
- return MOJO_RESULT_RESOURCE_EXHAUSTED;
+ MojoResult* result) {
+ if (!num_bytes) {
+ *result = MOJO_RESULT_INVALID_ARGUMENT;
+ return nullptr;
+ }
+ if (num_bytes > GetConfiguration().max_shared_memory_num_bytes) {
+ *result = MOJO_RESULT_RESOURCE_EXHAUSTED;
+ return nullptr;
+ }
scoped_refptr<embedder::PlatformSharedBuffer> shared_buffer(
platform_support->CreateSharedBuffer(static_cast<size_t>(num_bytes)));
- if (!shared_buffer)
- return MOJO_RESULT_RESOURCE_EXHAUSTED;
+ if (!shared_buffer) {
+ *result = MOJO_RESULT_RESOURCE_EXHAUSTED;
+ return nullptr;
+ }
- *result = CreateInternal(shared_buffer.Pass());
- return MOJO_RESULT_OK;
+ *result = MOJO_RESULT_OK;
+ return CreateInternal(shared_buffer.Pass());
}
Dispatcher::Type SharedBufferDispatcher::GetType() const {
@@ -85,7 +91,7 @@ Dispatcher::Type SharedBufferDispatcher::GetType() const {
}
// static
-scoped_refptr<SharedBufferDispatcher> SharedBufferDispatcher::Deserialize(
+RefPtr<SharedBufferDispatcher> SharedBufferDispatcher::Deserialize(
Channel* channel,
const void* source,
size_t size,
@@ -181,7 +187,7 @@ void SharedBufferDispatcher::CloseImplNoLock() {
shared_buffer_ = nullptr;
}
-scoped_refptr<Dispatcher>
+RefPtr<Dispatcher>
SharedBufferDispatcher::CreateEquivalentDispatcherAndCloseImplNoLock() {
mutex().AssertHeld();
DCHECK(shared_buffer_);
@@ -190,7 +196,7 @@ SharedBufferDispatcher::CreateEquivalentDispatcherAndCloseImplNoLock() {
MojoResult SharedBufferDispatcher::DuplicateBufferHandleImplNoLock(
UserPointer<const MojoDuplicateBufferHandleOptions> options,
- scoped_refptr<Dispatcher>* new_dispatcher) {
+ RefPtr<Dispatcher>* new_dispatcher) {
mutex().AssertHeld();
MojoDuplicateBufferHandleOptions validated_options;
@@ -233,7 +239,7 @@ void SharedBufferDispatcher::StartSerializeImplNoLock(
Channel* /*channel*/,
size_t* max_size,
size_t* max_platform_handles) {
- DCHECK(HasOneRef()); // Only one ref => no need to take the lock.
+ AssertHasOneRef(); // Only one ref => no need to take the lock.
*max_size = sizeof(SerializedSharedBufferDispatcher);
*max_platform_handles = 1;
}
@@ -243,7 +249,7 @@ bool SharedBufferDispatcher::EndSerializeAndCloseImplNoLock(
void* destination,
size_t* actual_size,
embedder::PlatformHandleVector* platform_handles) {
- DCHECK(HasOneRef()); // Only one ref => no need to take the lock.
+ AssertHasOneRef(); // Only one ref => no need to take the lock.
DCHECK(shared_buffer_);
SerializedSharedBufferDispatcher* serialization =
« no previous file with comments | « mojo/edk/system/shared_buffer_dispatcher.h ('k') | mojo/edk/system/shared_buffer_dispatcher_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698