| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |