Chromium Code Reviews| Index: mojo/edk/system/node_controller.cc |
| diff --git a/mojo/edk/system/node_controller.cc b/mojo/edk/system/node_controller.cc |
| index 7c49bde1222188942e10f917e87bd9c31d318d62..818c7701b399494e4de2759fc8026bcfe967ddd2 100644 |
| --- a/mojo/edk/system/node_controller.cc |
| +++ b/mojo/edk/system/node_controller.cc |
| @@ -562,6 +562,16 @@ void NodeController::ForwardMessage(const ports::NodeName& node, |
| } |
| } |
| +void NodeController::BroadcastMessage(ports::ScopedMessage message) { |
| + Channel::MessagePtr channel_message = |
| + static_cast<PortsMessage*>(message.get())->TakeChannelMessage(); |
| + scoped_refptr<NodeChannel> broker = GetBrokerChannel(); |
| + if (broker) |
| + broker->Broadcast(std::move(channel_message)); |
| + else |
| + OnBroadcast(std::move(channel_message)); |
| +} |
| + |
| void NodeController::PortStatusChanged(const ports::PortRef& port) { |
| scoped_refptr<ports::UserData> user_data; |
| node_->GetUserData(port, &user_data); |
| @@ -884,6 +894,20 @@ void NodeController::OnIntroduce(const ports::NodeName& from_node, |
| AddPeer(name, channel, true /* start_channel */); |
| } |
| +void NodeController::OnBroadcast(Channel::MessagePtr message) { |
| + { |
| + DCHECK(!message->has_handles()); |
| + base::AutoLock lock(peers_lock_); |
| + for (auto iter : peers_) { |
|
Anand Mistry (off Chromium)
2016/05/16 04:03:57
auto&
Ken Rockot(use gerrit already)
2016/05/16 04:42:36
Done
|
| + Channel::MessagePtr peer_message( |
| + new Channel::Message(message->payload_size(), 0)); |
| + memcpy(peer_message->mutable_payload(), message->payload(), |
| + message->payload_size()); |
| + iter.second->PortsMessage(std::move(peer_message)); |
| + } |
| + } |
| +} |
| + |
| #if defined(OS_WIN) || (defined(OS_MACOSX) && !defined(OS_IOS)) |
| void NodeController::OnRelayPortsMessage(const ports::NodeName& from_node, |
| base::ProcessHandle from_process, |