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

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

Issue 1529303004: Convert Pass()→std::move() in mojo/edk/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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 | « mojo/edk/system/core.cc ('k') | mojo/edk/system/data_pipe_producer_dispatcher.cc » ('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/data_pipe_consumer_dispatcher.h" 5 #include "mojo/edk/system/data_pipe_consumer_dispatcher.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility>
8 9
9 #include "base/bind.h" 10 #include "base/bind.h"
10 #include "base/logging.h" 11 #include "base/logging.h"
11 #include "base/message_loop/message_loop.h" 12 #include "base/message_loop/message_loop.h"
12 #include "mojo/edk/embedder/embedder_internal.h" 13 #include "mojo/edk/embedder/embedder_internal.h"
13 #include "mojo/edk/embedder/platform_shared_buffer.h" 14 #include "mojo/edk/embedder/platform_shared_buffer.h"
14 #include "mojo/edk/embedder/platform_support.h" 15 #include "mojo/edk/embedder/platform_support.h"
15 #include "mojo/edk/system/data_pipe.h" 16 #include "mojo/edk/system/data_pipe.h"
16 17
17 namespace mojo { 18 namespace mojo {
18 namespace edk { 19 namespace edk {
19 20
20 struct SharedMemoryHeader { 21 struct SharedMemoryHeader {
21 uint32_t data_size; 22 uint32_t data_size;
22 uint32_t read_buffer_size; 23 uint32_t read_buffer_size;
23 }; 24 };
24 25
25 void DataPipeConsumerDispatcher::Init( 26 void DataPipeConsumerDispatcher::Init(
26 ScopedPlatformHandle message_pipe, 27 ScopedPlatformHandle message_pipe,
27 char* serialized_read_buffer, size_t serialized_read_buffer_size) { 28 char* serialized_read_buffer, size_t serialized_read_buffer_size) {
28 if (message_pipe.is_valid()) { 29 if (message_pipe.is_valid()) {
29 channel_ = RawChannel::Create(message_pipe.Pass()); 30 channel_ = RawChannel::Create(std::move(message_pipe));
30 channel_->SetSerializedData( 31 channel_->SetSerializedData(
31 serialized_read_buffer, serialized_read_buffer_size, nullptr, 0u, 32 serialized_read_buffer, serialized_read_buffer_size, nullptr, 0u,
32 nullptr, nullptr); 33 nullptr, nullptr);
33 internal::g_io_thread_task_runner->PostTask( 34 internal::g_io_thread_task_runner->PostTask(
34 FROM_HERE, base::Bind(&DataPipeConsumerDispatcher::InitOnIO, this)); 35 FROM_HERE, base::Bind(&DataPipeConsumerDispatcher::InitOnIO, this));
35 } else { 36 } else {
36 // The data pipe consumer could have read all the data and the producer 37 // The data pipe consumer could have read all the data and the producer
37 // closed its end subsequently (before the consumer was sent). In that case 38 // closed its end subsequently (before the consumer was sent). In that case
38 // when we deserialize the consumer we must make sure to set error_ or 39 // when we deserialize the consumer we must make sure to set error_ or
39 // otherwise the peer-closed signal will never be satisfied. 40 // otherwise the peer-closed signal will never be satisfied.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 &shared_memory_handle, &shared_memory_size); 76 &shared_memory_handle, &shared_memory_size);
76 77
77 scoped_refptr<DataPipeConsumerDispatcher> rv(Create(options)); 78 scoped_refptr<DataPipeConsumerDispatcher> rv(Create(options));
78 79
79 char* serialized_read_buffer = nullptr; 80 char* serialized_read_buffer = nullptr;
80 size_t serialized_read_buffer_size = 0; 81 size_t serialized_read_buffer_size = 0;
81 scoped_refptr<PlatformSharedBuffer> shared_buffer; 82 scoped_refptr<PlatformSharedBuffer> shared_buffer;
82 scoped_ptr<PlatformSharedBufferMapping> mapping; 83 scoped_ptr<PlatformSharedBufferMapping> mapping;
83 if (shared_memory_size) { 84 if (shared_memory_size) {
84 shared_buffer = internal::g_platform_support->CreateSharedBufferFromHandle( 85 shared_buffer = internal::g_platform_support->CreateSharedBufferFromHandle(
85 shared_memory_size, shared_memory_handle.Pass()); 86 shared_memory_size, std::move(shared_memory_handle));
86 mapping = shared_buffer->Map(0, shared_memory_size); 87 mapping = shared_buffer->Map(0, shared_memory_size);
87 char* buffer = static_cast<char*>(mapping->GetBase()); 88 char* buffer = static_cast<char*>(mapping->GetBase());
88 SharedMemoryHeader* header = reinterpret_cast<SharedMemoryHeader*>(buffer); 89 SharedMemoryHeader* header = reinterpret_cast<SharedMemoryHeader*>(buffer);
89 buffer += sizeof(SharedMemoryHeader); 90 buffer += sizeof(SharedMemoryHeader);
90 if (header->data_size) { 91 if (header->data_size) {
91 rv->data_.assign(buffer, buffer + header->data_size); 92 rv->data_.assign(buffer, buffer + header->data_size);
92 buffer += header->data_size; 93 buffer += header->data_size;
93 } 94 }
94 95
95 if (header->read_buffer_size) { 96 if (header->read_buffer_size) {
96 serialized_read_buffer = buffer; 97 serialized_read_buffer = buffer;
97 serialized_read_buffer_size = header->read_buffer_size; 98 serialized_read_buffer_size = header->read_buffer_size;
98 buffer += header->read_buffer_size; 99 buffer += header->read_buffer_size;
99 } 100 }
100 } 101 }
101 102
102 rv->Init(platform_handle.Pass(), serialized_read_buffer, 103 rv->Init(std::move(platform_handle), serialized_read_buffer,
103 serialized_read_buffer_size); 104 serialized_read_buffer_size);
104 return rv; 105 return rv;
105 } 106 }
106 107
107 DataPipeConsumerDispatcher::DataPipeConsumerDispatcher( 108 DataPipeConsumerDispatcher::DataPipeConsumerDispatcher(
108 const MojoCreateDataPipeOptions& options) 109 const MojoCreateDataPipeOptions& options)
109 : options_(options), 110 : options_(options),
110 channel_(nullptr), 111 channel_(nullptr),
111 calling_init_(false), 112 calling_init_(false),
112 in_two_phase_read_(false), 113 in_two_phase_read_(false),
(...skipping 23 matching lines...) Expand all
136 137
137 scoped_refptr<Dispatcher> 138 scoped_refptr<Dispatcher>
138 DataPipeConsumerDispatcher::CreateEquivalentDispatcherAndCloseImplNoLock() { 139 DataPipeConsumerDispatcher::CreateEquivalentDispatcherAndCloseImplNoLock() {
139 lock().AssertAcquired(); 140 lock().AssertAcquired();
140 141
141 SerializeInternal(); 142 SerializeInternal();
142 143
143 scoped_refptr<DataPipeConsumerDispatcher> rv = Create(options_); 144 scoped_refptr<DataPipeConsumerDispatcher> rv = Create(options_);
144 data_.swap(rv->data_); 145 data_.swap(rv->data_);
145 serialized_read_buffer_.swap(rv->serialized_read_buffer_); 146 serialized_read_buffer_.swap(rv->serialized_read_buffer_);
146 rv->serialized_platform_handle_ = serialized_platform_handle_.Pass(); 147 rv->serialized_platform_handle_ = std::move(serialized_platform_handle_);
147 rv->serialized_ = true; 148 rv->serialized_ = true;
148 149
149 return scoped_refptr<Dispatcher>(rv.get()); 150 return scoped_refptr<Dispatcher>(rv.get());
150 } 151 }
151 152
152 MojoResult DataPipeConsumerDispatcher::ReadDataImplNoLock( 153 MojoResult DataPipeConsumerDispatcher::ReadDataImplNoLock(
153 void* elements, 154 void* elements,
154 uint32_t* num_bytes, 155 uint32_t* num_bytes,
155 MojoReadDataFlags flags) { 156 MojoReadDataFlags flags) {
156 lock().AssertAcquired(); 157 lock().AssertAcquired();
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 367
367 if (!serialized_read_buffer_.empty()) { 368 if (!serialized_read_buffer_.empty()) {
368 memcpy(start, &serialized_read_buffer_[0], 369 memcpy(start, &serialized_read_buffer_[0],
369 serialized_read_buffer_.size()); 370 serialized_read_buffer_.size());
370 start += serialized_read_buffer_.size(); 371 start += serialized_read_buffer_.size();
371 } 372 }
372 373
373 shared_memory_handle.reset(shared_buffer->PassPlatformHandle().release()); 374 shared_memory_handle.reset(shared_buffer->PassPlatformHandle().release());
374 } 375 }
375 376
376 DataPipe::EndSerialize( 377 DataPipe::EndSerialize(options_, std::move(serialized_platform_handle_),
377 options_, 378 std::move(shared_memory_handle), shared_memory_size,
378 serialized_platform_handle_.Pass(), 379 destination, actual_size, platform_handles);
379 shared_memory_handle.Pass(), shared_memory_size,
380 destination, actual_size, platform_handles);
381 CloseImplNoLock(); 380 CloseImplNoLock();
382 return true; 381 return true;
383 } 382 }
384 383
385 void DataPipeConsumerDispatcher::TransportStarted() { 384 void DataPipeConsumerDispatcher::TransportStarted() {
386 started_transport_.Acquire(); 385 started_transport_.Acquire();
387 } 386 }
388 387
389 void DataPipeConsumerDispatcher::TransportEnded() { 388 void DataPipeConsumerDispatcher::TransportEnded() {
390 started_transport_.Release(); 389 started_transport_.Release();
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 CHECK(!write_error) << "DataPipeConsumerDispatcher doesn't write."; 491 CHECK(!write_error) << "DataPipeConsumerDispatcher doesn't write.";
493 492
494 channel_ = nullptr; 493 channel_ = nullptr;
495 } 494 }
496 495
497 serialized_ = true; 496 serialized_ = true;
498 } 497 }
499 498
500 } // namespace edk 499 } // namespace edk
501 } // namespace mojo 500 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/edk/system/core.cc ('k') | mojo/edk/system/data_pipe_producer_dispatcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698