Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #include "remoting/signaling/delegating_signal_strategy.h" | 5 #include "remoting/signaling/delegating_signal_strategy.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/rand_util.h" | 8 #include "base/rand_util.h" |
| 9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
| 10 #include "base/threading/thread_task_runner_handle.h" | 10 #include "base/threading/thread_task_runner_handle.h" |
| 11 #include "third_party/libjingle_xmpp/xmllite/xmlelement.h" | 11 #include "third_party/libjingle_xmpp/xmllite/xmlelement.h" |
| 12 #include "third_party/libjingle_xmpp/xmpp/constants.h" | 12 #include "third_party/libjingle_xmpp/xmpp/constants.h" |
| 13 | 13 |
| 14 namespace remoting { | 14 namespace remoting { |
| 15 | 15 |
| 16 DelegatingSignalStrategy::DelegatingSignalStrategy( | 16 DelegatingSignalStrategy::DelegatingSignalStrategy( |
| 17 std::string local_jid, | 17 std::string local_jid, |
| 18 scoped_refptr<base::SingleThreadTaskRunner> client_task_runner, | 18 scoped_refptr<base::SingleThreadTaskRunner> client_task_runner, |
| 19 const SendIqCallback& send_iq_callback) | 19 const IqCallback& send_iq_callback) |
| 20 : local_jid_(local_jid), | 20 : local_jid_(local_jid), |
| 21 delegate_task_runner_(base::ThreadTaskRunnerHandle::Get()), | 21 delegate_task_runner_(base::ThreadTaskRunnerHandle::Get()), |
| 22 client_task_runner_(client_task_runner), | 22 client_task_runner_(client_task_runner), |
| 23 send_iq_callback_(send_iq_callback), | 23 send_iq_callback_(send_iq_callback), |
| 24 weak_factory_(this) {} | 24 weak_factory_(this) {} |
| 25 | 25 |
| 26 DelegatingSignalStrategy::~DelegatingSignalStrategy() {} | 26 DelegatingSignalStrategy::~DelegatingSignalStrategy() {} |
| 27 | 27 |
| 28 DelegatingSignalStrategy::IqCallback | |
| 29 DelegatingSignalStrategy::MakeIncomingMessageCallback() { | |
| 30 return base::Bind(&OnIncomingMessageFromDelegate, weak_factory_.GetWeakPtr(), | |
|
Sergey Ulanov
2017/03/14 19:20:59
use base::BindRepeating() please
(base::Bind is b
kelvinp
2017/03/15 21:56:46
Done.
| |
| 31 client_task_runner_); | |
| 32 } | |
| 33 | |
| 34 // static | |
| 35 void DelegatingSignalStrategy::OnIncomingMessageFromDelegate( | |
| 36 base::WeakPtr<DelegatingSignalStrategy> weak_ptr, | |
| 37 scoped_refptr<base::SingleThreadTaskRunner> client_task_runner, | |
| 38 const std::string& message) { | |
| 39 DCHECK(!client_task_runner->BelongsToCurrentThread()); | |
| 40 client_task_runner->PostTask( | |
| 41 FROM_HERE, base::Bind(&DelegatingSignalStrategy::OnIncomingMessage, | |
|
Sergey Ulanov
2017/03/14 19:20:59
BindOnce
kelvinp
2017/03/15 21:56:46
We can't migrate yet as PostTask() expects a Closu
| |
| 42 weak_ptr, message)); | |
| 43 } | |
| 44 | |
| 28 void DelegatingSignalStrategy::OnIncomingMessage(const std::string& message) { | 45 void DelegatingSignalStrategy::OnIncomingMessage(const std::string& message) { |
| 29 if (!client_task_runner_->BelongsToCurrentThread()) { | 46 DCHECK(client_task_runner_->BelongsToCurrentThread()); |
| 30 client_task_runner_->PostTask( | |
| 31 FROM_HERE, base::Bind(&DelegatingSignalStrategy::OnIncomingMessage, | |
| 32 weak_factory_.GetWeakPtr(), message)); | |
| 33 return; | |
| 34 } | |
| 35 | |
| 36 std::unique_ptr<buzz::XmlElement> stanza(buzz::XmlElement::ForStr(message)); | 47 std::unique_ptr<buzz::XmlElement> stanza(buzz::XmlElement::ForStr(message)); |
| 37 if (!stanza.get()) { | 48 if (!stanza.get()) { |
| 38 LOG(WARNING) << "Malformed XMPP stanza received: " << message; | 49 LOG(WARNING) << "Malformed XMPP stanza received: " << message; |
| 39 return; | 50 return; |
| 40 } | 51 } |
| 41 | 52 |
| 42 for (auto& listener : listeners_) { | 53 for (auto& listener : listeners_) { |
| 43 if (listener.OnSignalStrategyIncomingStanza(stanza.get())) | 54 if (listener.OnSignalStrategyIncomingStanza(stanza.get())) |
| 44 break; | 55 break; |
| 45 } | 56 } |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 87 delegate_task_runner_->PostTask(FROM_HERE, | 98 delegate_task_runner_->PostTask(FROM_HERE, |
| 88 base::Bind(send_iq_callback_, stanza->Str())); | 99 base::Bind(send_iq_callback_, stanza->Str())); |
| 89 return true; | 100 return true; |
| 90 } | 101 } |
| 91 | 102 |
| 92 std::string DelegatingSignalStrategy::GetNextId() { | 103 std::string DelegatingSignalStrategy::GetNextId() { |
| 93 return base::Uint64ToString(base::RandUint64()); | 104 return base::Uint64ToString(base::RandUint64()); |
| 94 } | 105 } |
| 95 | 106 |
| 96 } // namespace remoting | 107 } // namespace remoting |
| OLD | NEW |