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

Unified Diff: mojo/edk/system/node_controller.h

Issue 1712143002: [mojo-edk] Add support for transferring mach ports. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More stuff. Created 4 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 side-by-side diff with in-line comments
Download patch
Index: mojo/edk/system/node_controller.h
diff --git a/mojo/edk/system/node_controller.h b/mojo/edk/system/node_controller.h
index c103e03e239918aa60334233279f22d5f70a6cd0..cb5d400a006964abda018307774de443ecd4c852 100644
--- a/mojo/edk/system/node_controller.h
+++ b/mojo/edk/system/node_controller.h
@@ -25,11 +25,16 @@
#include "mojo/edk/system/ports/node.h"
#include "mojo/edk/system/ports/node_delegate.h"
+namespace base {
+class PortProvider;
+}
+
namespace mojo {
namespace edk {
class Broker;
class Core;
+class MachPortRelay;
class PortsMessage;
// The owner of ports::Node which facilitates core EDK implementation. All
@@ -56,6 +61,11 @@ class NodeController : public ports::NodeDelegate,
return io_task_runner_;
}
+#if defined(OS_MACOSX) && !defined(OS_IOS)
+ // Create the relay used to transfer mach ports between processes.
+ void CreateMachPortRelayIfNeeded(base::PortProvider* port_provider);
+#endif
+
// Called exactly once, shortly after construction, and before any other
// methods are called on this object.
void SetIOTaskRunner(scoped_refptr<base::TaskRunner> io_task_runner);
@@ -159,13 +169,16 @@ class NodeController : public ports::NodeDelegate,
void OnIntroduce(const ports::NodeName& from_node,
const ports::NodeName& name,
ScopedPlatformHandle channel_handle) override;
-#if defined(OS_WIN)
+#if defined(OS_WIN) || (defined(OS_MACOSX) && !defined(OS_IOS))
void OnRelayPortsMessage(const ports::NodeName& from_node,
base::ProcessHandle from_process,
const ports::NodeName& destination,
Channel::MessagePtr message) override;
#endif
void OnChannelError(const ports::NodeName& from_node) override;
+#if defined(OS_MACOSX) && !defined(OS_IOS)
+ MachPortRelay* GetMachPortRelay() override;
+#endif
// Marks this NodeController for destruction when the IO thread shuts down.
// This is used in case Core is torn down before the IO thread. Must only be
@@ -255,6 +268,12 @@ class NodeController : public ports::NodeDelegate,
scoped_ptr<Broker> broker_;
#endif
+#if defined(OS_MACOSX) && !defined(OS_IOS)
+ base::Lock mach_port_relay_lock_;
+ // Relay for transferring mach ports to/from children.
+ scoped_ptr<MachPortRelay> mach_port_relay_;
+#endif
+
DISALLOW_COPY_AND_ASSIGN(NodeController);
};

Powered by Google App Engine
This is Rietveld 408576698