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

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

Issue 2735113003: Changing SpawnChild to return a struct.
Patch Set: Created 3 years, 9 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 | « mojo/edk/system/node_channel.h ('k') | mojo/edk/system/node_controller.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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/node_channel.h" 5 #include "mojo/edk/system/node_channel.h"
6 6
7 #include <cstring> 7 #include <cstring>
8 #include <limits> 8 #include <limits>
9 #include <sstream> 9 #include <sstream>
10 10
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 *out_data = reinterpret_cast<const DataType*>( 153 *out_data = reinterpret_cast<const DataType*>(
154 static_cast<const char*>(bytes) + sizeof(Header)); 154 static_cast<const char*>(bytes) + sizeof(Header));
155 return true; 155 return true;
156 } 156 }
157 157
158 } // namespace 158 } // namespace
159 159
160 // static 160 // static
161 scoped_refptr<NodeChannel> NodeChannel::Create( 161 scoped_refptr<NodeChannel> NodeChannel::Create(
162 Delegate* delegate, 162 Delegate* delegate,
163 ScopedPlatformHandle platform_handle, 163 ConnectionParam connection_param,
164 scoped_refptr<base::TaskRunner> io_task_runner, 164 scoped_refptr<base::TaskRunner> io_task_runner,
165 const ProcessErrorCallback& process_error_callback) { 165 const ProcessErrorCallback& process_error_callback) {
166 #if defined(OS_NACL_SFI) 166 #if defined(OS_NACL_SFI)
167 LOG(FATAL) << "Multi-process not yet supported on NaCl-SFI"; 167 LOG(FATAL) << "Multi-process not yet supported on NaCl-SFI";
168 return nullptr; 168 return nullptr;
169 #else 169 #else
170 return new NodeChannel(delegate, std::move(platform_handle), io_task_runner, 170 return new NodeChannel(delegate, std::move(connection_param), io_task_runner,
171 process_error_callback); 171 process_error_callback);
172 #endif 172 #endif
173 } 173 }
174 174
175 // static 175 // static
176 Channel::MessagePtr NodeChannel::CreatePortsMessage(size_t payload_size, 176 Channel::MessagePtr NodeChannel::CreatePortsMessage(size_t payload_size,
177 void** payload, 177 void** payload,
178 size_t num_handles) { 178 size_t num_handles) {
179 return CreateMessage(MessageType::PORTS_MESSAGE, payload_size, num_handles, 179 return CreateMessage(MessageType::PORTS_MESSAGE, payload_size, num_handles,
180 payload); 180 payload);
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 &data); 447 &data);
448 data->source = source; 448 data->source = source;
449 if (message->payload_size()) 449 if (message->payload_size())
450 memcpy(data + 1, message->payload(), message->payload_size()); 450 memcpy(data + 1, message->payload(), message->payload_size());
451 relayed_message->SetHandles(message->TakeHandles()); 451 relayed_message->SetHandles(message->TakeHandles());
452 WriteChannelMessage(std::move(relayed_message)); 452 WriteChannelMessage(std::move(relayed_message));
453 } 453 }
454 #endif // defined(OS_WIN) || (defined(OS_MACOSX) && !defined(OS_IOS)) 454 #endif // defined(OS_WIN) || (defined(OS_MACOSX) && !defined(OS_IOS))
455 455
456 NodeChannel::NodeChannel(Delegate* delegate, 456 NodeChannel::NodeChannel(Delegate* delegate,
457 ScopedPlatformHandle platform_handle, 457 ConnectionParam connection_param,
458 scoped_refptr<base::TaskRunner> io_task_runner, 458 scoped_refptr<base::TaskRunner> io_task_runner,
459 const ProcessErrorCallback& process_error_callback) 459 const ProcessErrorCallback& process_error_callback)
460 : delegate_(delegate), 460 : delegate_(delegate),
461 io_task_runner_(io_task_runner), 461 io_task_runner_(io_task_runner),
462 process_error_callback_(process_error_callback) 462 process_error_callback_(process_error_callback)
463 #if !defined(OS_NACL_SFI) 463 #if !defined(OS_NACL_SFI)
464 , channel_( 464 ,
465 Channel::Create(this, std::move(platform_handle), io_task_runner_)) 465 channel_(
466 Channel::Create(this, std::move(connection_param), io_task_runner_))
466 #endif 467 #endif
467 { 468 {
468 } 469 }
469 470
470 NodeChannel::~NodeChannel() { 471 NodeChannel::~NodeChannel() {
471 ShutDown(); 472 ShutDown();
472 } 473 }
473 474
474 void NodeChannel::OnChannelMessage(const void* payload, 475 void NodeChannel::OnChannelMessage(const void* payload,
475 size_t payload_size, 476 size_t payload_size,
476 ScopedPlatformHandleVectorPtr handles) { 477 ScopedPlatformHandleVectorPtr handles) {
477 DCHECK(io_task_runner_->RunsTasksOnCurrentThread()); 478 DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
895 896
896 base::AutoLock lock(channel_lock_); 897 base::AutoLock lock(channel_lock_);
897 if (!channel_) 898 if (!channel_)
898 DLOG(ERROR) << "Dropping message on closed channel."; 899 DLOG(ERROR) << "Dropping message on closed channel.";
899 else 900 else
900 channel_->Write(std::move(message)); 901 channel_->Write(std::move(message));
901 } 902 }
902 903
903 } // namespace edk 904 } // namespace edk
904 } // namespace mojo 905 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/edk/system/node_channel.h ('k') | mojo/edk/system/node_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698