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

Side by Side Diff: mojo/edk/system/raw_channel_posix.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/raw_channel.cc ('k') | mojo/edk/system/raw_channel_unittest.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/raw_channel.h" 5 #include "mojo/edk/system/raw_channel.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <sys/socket.h> 8 #include <sys/socket.h>
9 #include <sys/stat.h> 9 #include <sys/stat.h>
10 #include <sys/types.h> 10 #include <sys/types.h>
11 #include <sys/uio.h> 11 #include <sys/uio.h>
12 #include <unistd.h> 12 #include <unistd.h>
13
14 #include <algorithm> 13 #include <algorithm>
15 #include <deque> 14 #include <deque>
15 #include <utility>
16 16
17 #include "base/bind.h" 17 #include "base/bind.h"
18 #include "base/location.h" 18 #include "base/location.h"
19 #include "base/logging.h" 19 #include "base/logging.h"
20 #include "base/memory/scoped_ptr.h" 20 #include "base/memory/scoped_ptr.h"
21 #include "base/memory/weak_ptr.h" 21 #include "base/memory/weak_ptr.h"
22 #include "base/message_loop/message_loop.h" 22 #include "base/message_loop/message_loop.h"
23 #include "base/synchronization/lock.h" 23 #include "base/synchronization/lock.h"
24 #include "mojo/edk/embedder/embedder_internal.h" 24 #include "mojo/edk/embedder/embedder_internal.h"
25 #include "mojo/edk/embedder/platform_channel_utils_posix.h" 25 #include "mojo/edk/embedder/platform_channel_utils_posix.h"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 102
103 // This is used for posting tasks from write threads to the I/O thread. It 103 // This is used for posting tasks from write threads to the I/O thread. It
104 // must only be accessed under |write_lock_|. The weak pointers it produces 104 // must only be accessed under |write_lock_|. The weak pointers it produces
105 // are only used/invalidated on the I/O thread. 105 // are only used/invalidated on the I/O thread.
106 base::WeakPtrFactory<RawChannelPosix> weak_ptr_factory_; 106 base::WeakPtrFactory<RawChannelPosix> weak_ptr_factory_;
107 107
108 MOJO_DISALLOW_COPY_AND_ASSIGN(RawChannelPosix); 108 MOJO_DISALLOW_COPY_AND_ASSIGN(RawChannelPosix);
109 }; 109 };
110 110
111 RawChannelPosix::RawChannelPosix(ScopedPlatformHandle handle) 111 RawChannelPosix::RawChannelPosix(ScopedPlatformHandle handle)
112 : fd_(handle.Pass()), 112 : fd_(std::move(handle)),
113 pending_read_(false), 113 pending_read_(false),
114 pending_write_(false), 114 pending_write_(false),
115 weak_ptr_factory_(this) { 115 weak_ptr_factory_(this) {
116 DCHECK(fd_.is_valid()); 116 DCHECK(fd_.is_valid());
117 } 117 }
118 118
119 RawChannelPosix::~RawChannelPosix() { 119 RawChannelPosix::~RawChannelPosix() {
120 DCHECK(!pending_read_); 120 DCHECK(!pending_read_);
121 DCHECK(!pending_write_); 121 DCHECK(!pending_write_);
122 122
(...skipping 22 matching lines...) Expand all
145 size_t i = 0; 145 size_t i = 0;
146 for (; platform_handles->size() - i > kPlatformChannelMaxNumHandles; 146 for (; platform_handles->size() - i > kPlatformChannelMaxNumHandles;
147 i += kPlatformChannelMaxNumHandles) { 147 i += kPlatformChannelMaxNumHandles) {
148 scoped_ptr<MessageInTransit> fd_message(new MessageInTransit( 148 scoped_ptr<MessageInTransit> fd_message(new MessageInTransit(
149 MessageInTransit::Type::RAW_CHANNEL_POSIX_EXTRA_PLATFORM_HANDLES, 0, 149 MessageInTransit::Type::RAW_CHANNEL_POSIX_EXTRA_PLATFORM_HANDLES, 0,
150 nullptr)); 150 nullptr));
151 ScopedPlatformHandleVectorPtr fds( 151 ScopedPlatformHandleVectorPtr fds(
152 new PlatformHandleVector( 152 new PlatformHandleVector(
153 platform_handles->begin() + i, 153 platform_handles->begin() + i,
154 platform_handles->begin() + i + kPlatformChannelMaxNumHandles)); 154 platform_handles->begin() + i + kPlatformChannelMaxNumHandles));
155 fd_message->SetTransportData(make_scoped_ptr( 155 fd_message->SetTransportData(make_scoped_ptr(new TransportData(
156 new TransportData(fds.Pass(), GetSerializedPlatformHandleSize()))); 156 std::move(fds), GetSerializedPlatformHandleSize())));
157 RawChannel::EnqueueMessageNoLock(fd_message.Pass()); 157 RawChannel::EnqueueMessageNoLock(std::move(fd_message));
158 } 158 }
159 159
160 // Remove the handles that we "moved" into the other messages. 160 // Remove the handles that we "moved" into the other messages.
161 platform_handles->erase(platform_handles->begin(), 161 platform_handles->erase(platform_handles->begin(),
162 platform_handles->begin() + i); 162 platform_handles->begin() + i);
163 } 163 }
164 } 164 }
165 165
166 RawChannel::EnqueueMessageNoLock(message.Pass()); 166 RawChannel::EnqueueMessageNoLock(std::move(message));
167 } 167 }
168 168
169 bool RawChannelPosix::OnReadMessageForRawChannel( 169 bool RawChannelPosix::OnReadMessageForRawChannel(
170 const MessageInTransit::View& message_view) { 170 const MessageInTransit::View& message_view) {
171 if (message_view.type() == 171 if (message_view.type() ==
172 MessageInTransit::Type::RAW_CHANNEL_POSIX_EXTRA_PLATFORM_HANDLES) { 172 MessageInTransit::Type::RAW_CHANNEL_POSIX_EXTRA_PLATFORM_HANDLES) {
173 // We don't need to do anything. |RawChannel| won't extract the platform 173 // We don't need to do anything. |RawChannel| won't extract the platform
174 // handles, and they'll be accumulated in |Read()|. 174 // handles, and they'll be accumulated in |Read()|.
175 return true; 175 return true;
176 } 176 }
(...skipping 12 matching lines...) Expand all
189 write_watcher_.reset(); 189 write_watcher_.reset();
190 190
191 SerializeReadBuffer(0u, serialized_read_buffer); 191 SerializeReadBuffer(0u, serialized_read_buffer);
192 SerializeWriteBuffer(0u, 0u, serialized_write_buffer, serialized_write_fds); 192 SerializeWriteBuffer(0u, 0u, serialized_write_buffer, serialized_write_fds);
193 193
194 while (!read_platform_handles_.empty()) { 194 while (!read_platform_handles_.empty()) {
195 serialized_read_fds->push_back(read_platform_handles_.front().handle); 195 serialized_read_fds->push_back(read_platform_handles_.front().handle);
196 read_platform_handles_.pop_front(); 196 read_platform_handles_.pop_front();
197 } 197 }
198 198
199 return fd_.Pass(); 199 return std::move(fd_);
200 } 200 }
201 201
202 void RawChannelPosix::SetSerializedFDs( 202 void RawChannelPosix::SetSerializedFDs(
203 std::vector<int>* serialized_read_fds, 203 std::vector<int>* serialized_read_fds,
204 std::vector<int>* serialized_write_fds) { 204 std::vector<int>* serialized_write_fds) {
205 if (serialized_read_fds) { 205 if (serialized_read_fds) {
206 for(auto i: *serialized_read_fds) 206 for(auto i: *serialized_read_fds)
207 read_platform_handles_.push_back(PlatformHandle(i)); 207 read_platform_handles_.push_back(PlatformHandle(i));
208 } 208 }
209 209
210 if (serialized_write_fds) { 210 if (serialized_write_fds) {
211 size_t i = 0; 211 size_t i = 0;
212 while (i < serialized_write_fds->size()) { 212 while (i < serialized_write_fds->size()) {
213 size_t batch = std::min(kPlatformChannelMaxNumHandles, 213 size_t batch = std::min(kPlatformChannelMaxNumHandles,
214 serialized_write_fds->size() - i); 214 serialized_write_fds->size() - i);
215 scoped_ptr<MessageInTransit> fd_message(new MessageInTransit( 215 scoped_ptr<MessageInTransit> fd_message(new MessageInTransit(
216 MessageInTransit::Type::RAW_CHANNEL_POSIX_EXTRA_PLATFORM_HANDLES, 0, 216 MessageInTransit::Type::RAW_CHANNEL_POSIX_EXTRA_PLATFORM_HANDLES, 0,
217 nullptr)); 217 nullptr));
218 ScopedPlatformHandleVectorPtr fds( 218 ScopedPlatformHandleVectorPtr fds(
219 new PlatformHandleVector(serialized_write_fds->begin() + i, 219 new PlatformHandleVector(serialized_write_fds->begin() + i,
220 serialized_write_fds->begin() + i + batch)); 220 serialized_write_fds->begin() + i + batch));
221 fd_message->SetTransportData(make_scoped_ptr( 221 fd_message->SetTransportData(make_scoped_ptr(new TransportData(
222 new TransportData(fds.Pass(), GetSerializedPlatformHandleSize()))); 222 std::move(fds), GetSerializedPlatformHandleSize())));
223 RawChannel::EnqueueMessageNoLock(fd_message.Pass()); 223 RawChannel::EnqueueMessageNoLock(std::move(fd_message));
224 i += batch; 224 i += batch;
225 } 225 }
226 } 226 }
227 } 227 }
228 228
229 bool RawChannelPosix::IsHandleValid() { 229 bool RawChannelPosix::IsHandleValid() {
230 return fd_.is_valid(); 230 return fd_.is_valid();
231 } 231 }
232 232
233 RawChannel::IOResult RawChannelPosix::Read(size_t* bytes_read) { 233 RawChannel::IOResult RawChannelPosix::Read(size_t* bytes_read) {
(...skipping 28 matching lines...) Expand all
262 return ScopedPlatformHandleVectorPtr(); 262 return ScopedPlatformHandleVectorPtr();
263 } 263 }
264 264
265 ScopedPlatformHandleVectorPtr rv( 265 ScopedPlatformHandleVectorPtr rv(
266 new PlatformHandleVector(num_platform_handles)); 266 new PlatformHandleVector(num_platform_handles));
267 rv->assign(read_platform_handles_.begin(), 267 rv->assign(read_platform_handles_.begin(),
268 read_platform_handles_.begin() + num_platform_handles); 268 read_platform_handles_.begin() + num_platform_handles);
269 read_platform_handles_.erase( 269 read_platform_handles_.erase(
270 read_platform_handles_.begin(), 270 read_platform_handles_.begin(),
271 read_platform_handles_.begin() + num_platform_handles); 271 read_platform_handles_.begin() + num_platform_handles);
272 return rv.Pass(); 272 return rv;
273 } 273 }
274 274
275 size_t RawChannelPosix::SerializePlatformHandles(std::vector<int>* fds) { 275 size_t RawChannelPosix::SerializePlatformHandles(std::vector<int>* fds) {
276 if (!write_buffer_no_lock()->HavePlatformHandlesToSend()) 276 if (!write_buffer_no_lock()->HavePlatformHandlesToSend())
277 return 0u; 277 return 0u;
278 278
279 size_t num_platform_handles; 279 size_t num_platform_handles;
280 PlatformHandle* platform_handles; 280 PlatformHandle* platform_handles;
281 void* serialization_data; // Actually unused. 281 void* serialization_data; // Actually unused.
282 write_buffer_no_lock()->GetPlatformHandlesToSend( 282 write_buffer_no_lock()->GetPlatformHandlesToSend(
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 } 550 }
551 } 551 }
552 552
553 } // namespace 553 } // namespace
554 554
555 // ----------------------------------------------------------------------------- 555 // -----------------------------------------------------------------------------
556 556
557 // Static factory method declared in raw_channel.h. 557 // Static factory method declared in raw_channel.h.
558 // static 558 // static
559 RawChannel* RawChannel::Create(ScopedPlatformHandle handle) { 559 RawChannel* RawChannel::Create(ScopedPlatformHandle handle) {
560 return new RawChannelPosix(handle.Pass()); 560 return new RawChannelPosix(std::move(handle));
561 } 561 }
562 562
563 size_t RawChannel::GetSerializedPlatformHandleSize() { 563 size_t RawChannel::GetSerializedPlatformHandleSize() {
564 // We don't actually need any space on POSIX (since we just send FDs). 564 // We don't actually need any space on POSIX (since we just send FDs).
565 return 0; 565 return 0;
566 } 566 }
567 567
568 bool RawChannel::IsOtherEndOf(RawChannel* other) { 568 bool RawChannel::IsOtherEndOf(RawChannel* other) {
569 #if defined(OFFICIAL_BUILD) 569 #if defined(OFFICIAL_BUILD)
570 return false; 570 return false;
(...skipping 12 matching lines...) Expand all
583 socklen_t peek_off_size = sizeof(id1); 583 socklen_t peek_off_size = sizeof(id1);
584 getsockopt(this_handle.handle, SOL_SOCKET, SO_PEEK_OFF, &id1, &peek_off_size); 584 getsockopt(this_handle.handle, SOL_SOCKET, SO_PEEK_OFF, &id1, &peek_off_size);
585 getsockopt(other_handle.handle, SOL_SOCKET, SO_PEEK_OFF, &id2, 585 getsockopt(other_handle.handle, SOL_SOCKET, SO_PEEK_OFF, &id2,
586 &peek_off_size); 586 &peek_off_size);
587 return id1 == id2; 587 return id1 == id2;
588 #endif 588 #endif
589 } 589 }
590 590
591 } // namespace edk 591 } // namespace edk
592 } // namespace mojo 592 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/edk/system/raw_channel.cc ('k') | mojo/edk/system/raw_channel_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698