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

Unified Diff: ipc/mojo/ipc_message_pipe_reader.cc

Issue 2069803003: Fold //ipc/mojo into //ipc. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mojo-ipc-deps
Patch Set: rebase Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ipc/mojo/ipc_message_pipe_reader.h ('k') | ipc/mojo/ipc_mojo.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « ipc/mojo/ipc_message_pipe_reader.h ('k') | ipc/mojo/ipc_mojo.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698