diff options
Diffstat (limited to 'mojo/edk/system/node_controller.h')
-rw-r--r-- | mojo/edk/system/node_controller.h | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/mojo/edk/system/node_controller.h b/mojo/edk/system/node_controller.h index 75d2892..34c2644 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 CreateMachPortRelay(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); @@ -162,13 +172,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 @@ -258,6 +271,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); }; |