| Index: mojo/edk/system/broker_host_posix.cc
|
| diff --git a/mojo/edk/system/broker_host_posix.cc b/mojo/edk/system/broker_host_posix.cc
|
| deleted file mode 100644
|
| index ed8e213c1c0d04a8a3102301861e541473a27276..0000000000000000000000000000000000000000
|
| --- a/mojo/edk/system/broker_host_posix.cc
|
| +++ /dev/null
|
| @@ -1,129 +0,0 @@
|
| -// Copyright 2016 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "mojo/edk/system/broker_host.h"
|
| -
|
| -#include <fcntl.h>
|
| -#include <unistd.h>
|
| -
|
| -#include <utility>
|
| -
|
| -#include "base/logging.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "base/threading/thread_task_runner_handle.h"
|
| -#include "mojo/edk/embedder/embedder_internal.h"
|
| -#include "mojo/edk/embedder/platform_channel_utils_posix.h"
|
| -#include "mojo/edk/embedder/platform_handle_vector.h"
|
| -#include "mojo/edk/embedder/platform_shared_buffer.h"
|
| -#include "mojo/edk/system/broker_messages.h"
|
| -
|
| -namespace mojo {
|
| -namespace edk {
|
| -
|
| -namespace {
|
| -// To prevent abuse, limit the maximum size of shared memory buffers.
|
| -// TODO(amistry): Re-consider this limit, or do something smarter.
|
| -const size_t kMaxSharedBufferSize = 16 * 1024 * 1024;
|
| -}
|
| -
|
| -BrokerHost::BrokerHost(ScopedPlatformHandle platform_handle) {
|
| - CHECK(platform_handle.is_valid());
|
| -
|
| - base::MessageLoop::current()->AddDestructionObserver(this);
|
| -
|
| - channel_ = Channel::Create(this, std::move(platform_handle),
|
| - base::ThreadTaskRunnerHandle::Get());
|
| - channel_->Start();
|
| -}
|
| -
|
| -BrokerHost::~BrokerHost() {
|
| - // We're always destroyed on the creation thread, which is the IO thread.
|
| - base::MessageLoop::current()->RemoveDestructionObserver(this);
|
| -
|
| - if (channel_)
|
| - channel_->ShutDown();
|
| -}
|
| -
|
| -void BrokerHost::SendChannel(ScopedPlatformHandle handle) {
|
| - CHECK(handle.is_valid());
|
| - CHECK(channel_);
|
| -
|
| - Channel::MessagePtr message =
|
| - CreateBrokerMessage(BrokerMessageType::INIT, 1, nullptr);
|
| - ScopedPlatformHandleVectorPtr handles;
|
| - handles.reset(new PlatformHandleVector(1));
|
| - handles->at(0) = handle.release();
|
| - message->SetHandles(std::move(handles));
|
| -
|
| - channel_->Write(std::move(message));
|
| -}
|
| -
|
| -void BrokerHost::OnBufferRequest(size_t num_bytes) {
|
| - scoped_refptr<PlatformSharedBuffer> buffer;
|
| - scoped_refptr<PlatformSharedBuffer> read_only_buffer;
|
| - if (num_bytes <= kMaxSharedBufferSize) {
|
| - buffer = PlatformSharedBuffer::Create(num_bytes);
|
| - if (buffer)
|
| - read_only_buffer = buffer->CreateReadOnlyDuplicate();
|
| - if (!read_only_buffer)
|
| - buffer = nullptr;
|
| - } else {
|
| - LOG(ERROR) << "Shared buffer request too large: " << num_bytes;
|
| - }
|
| -
|
| - Channel::MessagePtr message = CreateBrokerMessage(
|
| - BrokerMessageType::BUFFER_RESPONSE, buffer ? 2 : 0, nullptr);
|
| - if (buffer) {
|
| - ScopedPlatformHandleVectorPtr handles;
|
| - handles.reset(new PlatformHandleVector(2));
|
| - handles->at(0) = buffer->PassPlatformHandle().release();
|
| - handles->at(1) = read_only_buffer->PassPlatformHandle().release();
|
| - message->SetHandles(std::move(handles));
|
| - }
|
| -
|
| - channel_->Write(std::move(message));
|
| -}
|
| -
|
| -void BrokerHost::OnChannelMessage(const void* payload,
|
| - size_t payload_size,
|
| - ScopedPlatformHandleVectorPtr handles) {
|
| - if (payload_size < sizeof(BrokerMessageHeader))
|
| - return;
|
| -
|
| - const BrokerMessageHeader* header =
|
| - static_cast<const BrokerMessageHeader*>(payload);
|
| - switch (header->type) {
|
| - case BrokerMessageType::BUFFER_REQUEST:
|
| - if (payload_size ==
|
| - sizeof(BrokerMessageHeader) + sizeof(BufferRequestData)) {
|
| - const BufferRequestData* request =
|
| - reinterpret_cast<const BufferRequestData*>(header + 1);
|
| - OnBufferRequest(request->size);
|
| - return;
|
| - }
|
| - break;
|
| -
|
| - default:
|
| - break;
|
| - }
|
| -
|
| - LOG(ERROR) << "Unexpected broker message type: " << header->type;
|
| -}
|
| -
|
| -void BrokerHost::OnChannelError() {
|
| - if (channel_) {
|
| - channel_->ShutDown();
|
| - channel_ = nullptr;
|
| - }
|
| -
|
| - delete this;
|
| -}
|
| -
|
| -void BrokerHost::WillDestroyCurrentMessageLoop() {
|
| - delete this;
|
| -}
|
| -
|
| -} // namespace edk
|
| -} // namespace mojo
|
|
|