| Index: ipc/mojo/ipc_message_pipe_reader.cc
|
| diff --git a/ipc/mojo/ipc_message_pipe_reader.cc b/ipc/mojo/ipc_message_pipe_reader.cc
|
| deleted file mode 100644
|
| index 08bbcd4c2c28b10224415c187619353d07ea7789..0000000000000000000000000000000000000000
|
| --- a/ipc/mojo/ipc_message_pipe_reader.cc
|
| +++ /dev/null
|
| @@ -1,156 +0,0 @@
|
| -// Copyright 2014 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 "ipc/mojo/ipc_message_pipe_reader.h"
|
| -
|
| -#include <stdint.h>
|
| -
|
| -#include <utility>
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/bind_helpers.h"
|
| -#include "base/location.h"
|
| -#include "base/logging.h"
|
| -#include "base/macros.h"
|
| -#include "base/single_thread_task_runner.h"
|
| -#include "base/threading/thread_task_runner_handle.h"
|
| -#include "ipc/mojo/ipc_channel_mojo.h"
|
| -#include "mojo/public/cpp/bindings/message.h"
|
| -
|
| -namespace IPC {
|
| -namespace internal {
|
| -
|
| -namespace {
|
| -
|
| -// Used by Send() to capture a serialized Channel::Receive message.
|
| -class MessageSerializer : public mojo::MessageReceiverWithResponder {
|
| - public:
|
| - MessageSerializer() {}
|
| - ~MessageSerializer() override {}
|
| -
|
| - mojo::Message* message() { return &message_; }
|
| -
|
| - private:
|
| - // mojo::MessageReceiverWithResponder
|
| - bool Accept(mojo::Message* message) override {
|
| - message->MoveTo(&message_);
|
| - return true;
|
| - }
|
| -
|
| - bool AcceptWithResponder(mojo::Message* message,
|
| - mojo::MessageReceiver* responder) override {
|
| - NOTREACHED();
|
| - return false;
|
| - }
|
| -
|
| - mojo::Message message_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(MessageSerializer);
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -MessagePipeReader::MessagePipeReader(
|
| - mojo::MessagePipeHandle pipe,
|
| - mojom::ChannelAssociatedPtr sender,
|
| - mojo::AssociatedInterfaceRequest<mojom::Channel> receiver,
|
| - base::ProcessId peer_pid,
|
| - MessagePipeReader::Delegate* delegate)
|
| - : delegate_(delegate),
|
| - peer_pid_(peer_pid),
|
| - sender_(std::move(sender)),
|
| - binding_(this, std::move(receiver)),
|
| - sender_interface_id_(sender_.interface_id()),
|
| - sender_pipe_(pipe) {
|
| - sender_.set_connection_error_handler(
|
| - base::Bind(&MessagePipeReader::OnPipeError, base::Unretained(this),
|
| - MOJO_RESULT_FAILED_PRECONDITION));
|
| - binding_.set_connection_error_handler(
|
| - base::Bind(&MessagePipeReader::OnPipeError, base::Unretained(this),
|
| - MOJO_RESULT_FAILED_PRECONDITION));
|
| -}
|
| -
|
| -MessagePipeReader::~MessagePipeReader() {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| - // The pipe should be closed before deletion.
|
| -}
|
| -
|
| -void MessagePipeReader::Close() {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| - sender_.reset();
|
| - if (binding_.is_bound())
|
| - binding_.Close();
|
| -}
|
| -
|
| -bool MessagePipeReader::Send(std::unique_ptr<Message> message) {
|
| - TRACE_EVENT_WITH_FLOW0(TRACE_DISABLED_BY_DEFAULT("ipc.flow"),
|
| - "MessagePipeReader::Send",
|
| - message->flags(),
|
| - TRACE_EVENT_FLAG_FLOW_OUT);
|
| - mojo::Array<mojom::SerializedHandlePtr> handles(nullptr);
|
| - MojoResult result = MOJO_RESULT_OK;
|
| - result = ChannelMojo::ReadFromMessageAttachmentSet(message.get(), &handles);
|
| - if (result != MOJO_RESULT_OK)
|
| - return false;
|
| -
|
| - mojo::Array<uint8_t> data(message->size());
|
| - std::copy(reinterpret_cast<const uint8_t*>(message->data()),
|
| - reinterpret_cast<const uint8_t*>(message->data()) + message->size(),
|
| - &data[0]);
|
| -
|
| - MessageSerializer serializer;
|
| - mojom::ChannelProxy proxy(&serializer);
|
| - proxy.Receive(std::move(data), std::move(handles));
|
| - mojo::Message* mojo_message = serializer.message();
|
| -
|
| - size_t num_handles = mojo_message->handles()->size();
|
| - DCHECK_LE(num_handles, std::numeric_limits<uint32_t>::max());
|
| -
|
| - mojo_message->set_interface_id(sender_interface_id_);
|
| - result = mojo::WriteMessageNew(sender_pipe_, mojo_message->TakeMojoMessage(),
|
| - MOJO_WRITE_MESSAGE_FLAG_NONE);
|
| -
|
| - DVLOG(4) << "Send " << message->type() << ": " << message->size();
|
| - return result == MOJO_RESULT_OK;
|
| -}
|
| -
|
| -void MessagePipeReader::Receive(
|
| - mojo::Array<uint8_t> data,
|
| - mojo::Array<mojom::SerializedHandlePtr> handles) {
|
| - Message message(
|
| - data.size() == 0 ? "" : reinterpret_cast<const char*>(&data[0]),
|
| - static_cast<uint32_t>(data.size()));
|
| - message.set_sender_pid(peer_pid_);
|
| -
|
| - DVLOG(4) << "Receive " << message.type() << ": " << message.size();
|
| - MojoResult write_result =
|
| - ChannelMojo::WriteToMessageAttachmentSet(std::move(handles), &message);
|
| - if (write_result != MOJO_RESULT_OK) {
|
| - OnPipeError(write_result);
|
| - return;
|
| - }
|
| -
|
| - TRACE_EVENT_WITH_FLOW0(TRACE_DISABLED_BY_DEFAULT("ipc.flow"),
|
| - "MessagePipeReader::Receive",
|
| - message.flags(),
|
| - TRACE_EVENT_FLAG_FLOW_IN);
|
| - delegate_->OnMessageReceived(message);
|
| -}
|
| -
|
| -void MessagePipeReader::OnPipeError(MojoResult error) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| - if (delegate_)
|
| - delegate_->OnPipeError();
|
| - Close();
|
| -}
|
| -
|
| -void MessagePipeReader::DelayedDeleter::operator()(
|
| - MessagePipeReader* ptr) const {
|
| - ptr->Close();
|
| - base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
|
| - base::Bind(&DeleteNow, ptr));
|
| -}
|
| -
|
| -} // namespace internal
|
| -} // namespace IPC
|
|
|