OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef MOJO_EDK_SYSTEM_NODE_CONTROLLER_H_ | 5 #ifndef MOJO_EDK_SYSTEM_NODE_CONTROLLER_H_ |
6 #define MOJO_EDK_SYSTEM_NODE_CONTROLLER_H_ | 6 #define MOJO_EDK_SYSTEM_NODE_CONTROLLER_H_ |
7 | 7 |
8 #include <queue> | 8 #include <queue> |
9 #include <unordered_map> | 9 #include <unordered_map> |
10 #include <unordered_set> | 10 #include <unordered_set> |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 scoped_refptr<base::TaskRunner> io_task_runner() const { | 55 scoped_refptr<base::TaskRunner> io_task_runner() const { |
56 return io_task_runner_; | 56 return io_task_runner_; |
57 } | 57 } |
58 | 58 |
59 // Called exactly once, shortly after construction, and before any other | 59 // Called exactly once, shortly after construction, and before any other |
60 // methods are called on this object. | 60 // methods are called on this object. |
61 void SetIOTaskRunner(scoped_refptr<base::TaskRunner> io_task_runner); | 61 void SetIOTaskRunner(scoped_refptr<base::TaskRunner> io_task_runner); |
62 | 62 |
63 // Connects this node to a child node. This node will initiate a handshake. | 63 // Connects this node to a child node. This node will initiate a handshake. |
64 void ConnectToChild(base::ProcessHandle process_handle, | 64 void ConnectToChild(base::ProcessHandle process_handle, |
65 ScopedPlatformHandle platform_handle); | 65 ScopedPlatformHandle platform_handle, |
| 66 const std::string& secret); |
66 | 67 |
67 // Connects this node to a parent node. The parent node will initiate a | 68 // Connects this node to a parent node. The parent node will initiate a |
68 // handshake. | 69 // handshake. |
69 void ConnectToParent(ScopedPlatformHandle platform_handle); | 70 void ConnectToParent(ScopedPlatformHandle platform_handle, |
| 71 const std::string& secret); |
70 | 72 |
71 // Sets a port's observer. If |observer| is null the port's current observer | 73 // Sets a port's observer. If |observer| is null the port's current observer |
72 // is removed. | 74 // is removed. |
73 void SetPortObserver(const ports::PortRef& port, | 75 void SetPortObserver(const ports::PortRef& port, |
74 const scoped_refptr<PortObserver>& observer); | 76 const scoped_refptr<PortObserver>& observer); |
75 | 77 |
76 // Closes a port. Use this in lieu of calling Node::ClosePort() directly, as | 78 // Closes a port. Use this in lieu of calling Node::ClosePort() directly, as |
77 // it ensures the port's observer has also been removed. | 79 // it ensures the port's observer has also been removed. |
78 void ClosePort(const ports::PortRef& port); | 80 void ClosePort(const ports::PortRef& port); |
79 | 81 |
(...skipping 23 matching lines...) Expand all Loading... |
103 void RequestShutdown(const base::Closure& callback); | 105 void RequestShutdown(const base::Closure& callback); |
104 | 106 |
105 private: | 107 private: |
106 friend Core; | 108 friend Core; |
107 | 109 |
108 using NodeMap = std::unordered_map<ports::NodeName, | 110 using NodeMap = std::unordered_map<ports::NodeName, |
109 scoped_refptr<NodeChannel>>; | 111 scoped_refptr<NodeChannel>>; |
110 using OutgoingMessageQueue = std::queue<Channel::MessagePtr>; | 112 using OutgoingMessageQueue = std::queue<Channel::MessagePtr>; |
111 | 113 |
112 void ConnectToChildOnIOThread(base::ProcessHandle process_handle, | 114 void ConnectToChildOnIOThread(base::ProcessHandle process_handle, |
113 ScopedPlatformHandle platform_handle); | 115 ScopedPlatformHandle platform_handle, |
114 void ConnectToParentOnIOThread(ScopedPlatformHandle platform_handle); | 116 const std::string& secret); |
| 117 void ConnectToParentOnIOThread(ScopedPlatformHandle platform_handle, |
| 118 const std::string& secret); |
115 | 119 |
116 scoped_refptr<NodeChannel> GetPeerChannel(const ports::NodeName& name); | 120 scoped_refptr<NodeChannel> GetPeerChannel(const ports::NodeName& name); |
117 scoped_refptr<NodeChannel> GetParentChannel(); | 121 scoped_refptr<NodeChannel> GetParentChannel(); |
118 scoped_refptr<NodeChannel> GetBrokerChannel(); | 122 scoped_refptr<NodeChannel> GetBrokerChannel(); |
119 | 123 |
120 void AddPeer(const ports::NodeName& name, | 124 void AddPeer(const ports::NodeName& name, |
121 scoped_refptr<NodeChannel> channel, | 125 scoped_refptr<NodeChannel> channel, |
122 bool start_channel); | 126 bool start_channel); |
123 void DropPeer(const ports::NodeName& name); | 127 void DropPeer(const ports::NodeName& name); |
124 void SendPeerMessage(const ports::NodeName& name, | 128 void SendPeerMessage(const ports::NodeName& name, |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 scoped_ptr<Broker> broker_; | 259 scoped_ptr<Broker> broker_; |
256 #endif | 260 #endif |
257 | 261 |
258 DISALLOW_COPY_AND_ASSIGN(NodeController); | 262 DISALLOW_COPY_AND_ASSIGN(NodeController); |
259 }; | 263 }; |
260 | 264 |
261 } // namespace edk | 265 } // namespace edk |
262 } // namespace mojo | 266 } // namespace mojo |
263 | 267 |
264 #endif // MOJO_EDK_SYSTEM_NODE_CONTROLLER_H_ | 268 #endif // MOJO_EDK_SYSTEM_NODE_CONTROLLER_H_ |
OLD | NEW |