| Index: mojo/edk/system/node_channel.cc
|
| diff --git a/mojo/edk/system/node_channel.cc b/mojo/edk/system/node_channel.cc
|
| index 114e2863560b88c443049dbb1de8764c3e6858ef..da9e0dbf25c3bcd53413b119e566e11e28365d0c 100644
|
| --- a/mojo/edk/system/node_channel.cc
|
| +++ b/mojo/edk/system/node_channel.cc
|
| @@ -47,6 +47,7 @@ enum class MessageType : uint32_t {
|
| #if defined(OS_WIN) || (defined(OS_MACOSX) && !defined(OS_IOS))
|
| PORTS_MESSAGE_FROM_RELAY,
|
| #endif
|
| + ACCEPT_PEER,
|
| };
|
|
|
| struct Header {
|
| @@ -67,6 +68,12 @@ struct AcceptParentData {
|
| ports::NodeName child_name;
|
| };
|
|
|
| +struct AcceptPeerData {
|
| + ports::NodeName token;
|
| + ports::NodeName peer_name;
|
| + ports::PortName port_name;
|
| +};
|
| +
|
| // This message may include a process handle on plaforms that require it.
|
| struct AddBrokerClientData {
|
| ports::NodeName client_name;
|
| @@ -282,6 +289,18 @@ void NodeChannel::AcceptParent(const ports::NodeName& token,
|
| WriteChannelMessage(std::move(message));
|
| }
|
|
|
| +void NodeChannel::AcceptPeer(const ports::NodeName& sender_name,
|
| + const ports::NodeName& token,
|
| + const ports::PortName& port_name) {
|
| + AcceptPeerData* data;
|
| + Channel::MessagePtr message =
|
| + CreateMessage(MessageType::ACCEPT_PEER, sizeof(AcceptPeerData), 0, &data);
|
| + data->token = token;
|
| + data->peer_name = sender_name;
|
| + data->port_name = port_name;
|
| + WriteChannelMessage(std::move(message));
|
| +}
|
| +
|
| void NodeChannel::AddBrokerClient(const ports::NodeName& client_name,
|
| base::ProcessHandle process_handle) {
|
| AddBrokerClientData* data;
|
| @@ -728,6 +747,16 @@ void NodeChannel::OnChannelMessage(const void* payload,
|
|
|
| #endif // defined(OS_WIN) || (defined(OS_MACOSX) && !defined(OS_IOS))
|
|
|
| + case MessageType::ACCEPT_PEER: {
|
| + const AcceptPeerData* data;
|
| + if (GetMessagePayload(payload, payload_size, &data)) {
|
| + delegate_->OnAcceptPeer(remote_node_name_, data->token, data->peer_name,
|
| + data->port_name);
|
| + return;
|
| + }
|
| + break;
|
| + }
|
| +
|
| default:
|
| break;
|
| }
|
|
|