Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(282)

Side by Side Diff: remoting/signaling/delegating_signal_strategy.cc

Issue 2384063008: Enables delegating signal strategy for It2Me Host. (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/client/plugin/delegating_signal_strategy.h" 5 #include "remoting/signaling/delegating_signal_strategy.h"
6 6
7 #include "base/bind.h"
7 #include "base/rand_util.h" 8 #include "base/rand_util.h"
8 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
9 #include "third_party/webrtc/libjingle/xmllite/xmlelement.h" 10 #include "third_party/webrtc/libjingle/xmllite/xmlelement.h"
11 #include "third_party/webrtc/libjingle/xmpp/constants.h"
10 12
11 namespace remoting { 13 namespace remoting {
12 14
13 DelegatingSignalStrategy::DelegatingSignalStrategy( 15 DelegatingSignalStrategy::DelegatingSignalStrategy(
14 std::string local_jid, 16 std::string local_jid,
17 scoped_refptr<base::SingleThreadTaskRunner> delegate_task_runner,
18 scoped_refptr<base::SingleThreadTaskRunner> client_task_runner,
15 const SendIqCallback& send_iq_callback) 19 const SendIqCallback& send_iq_callback)
16 : local_jid_(local_jid), 20 : local_jid_(local_jid),
21 delegate_task_runner_(delegate_task_runner),
22 client_task_runner_(client_task_runner),
17 send_iq_callback_(send_iq_callback) { 23 send_iq_callback_(send_iq_callback) {
18 } 24 }
19 25
20 DelegatingSignalStrategy::~DelegatingSignalStrategy() { 26 DelegatingSignalStrategy::~DelegatingSignalStrategy() {}
21 }
22 27
23 void DelegatingSignalStrategy::OnIncomingMessage(const std::string& message) { 28 void DelegatingSignalStrategy::OnIncomingMessage(const std::string& message) {
29 if (!client_task_runner_->BelongsToCurrentThread()) {
30 client_task_runner_->PostTask(
31 FROM_HERE,
32 base::Bind(&DelegatingSignalStrategy::OnIncomingMessage,
33 base::Unretained(this), message));
Sergey Ulanov 2016/10/05 21:49:07 base::Unretained() is not safe here. Use a weak pt
kelvinp 2016/10/06 00:43:05 Done.
34 return;
35 }
36
24 std::unique_ptr<buzz::XmlElement> stanza(buzz::XmlElement::ForStr(message)); 37 std::unique_ptr<buzz::XmlElement> stanza(buzz::XmlElement::ForStr(message));
25 if (!stanza.get()) { 38 if (!stanza.get()) {
26 LOG(WARNING) << "Malformed XMPP stanza received: " << message; 39 LOG(WARNING) << "Malformed XMPP stanza received: " << message;
27 return; 40 return;
28 } 41 }
29 42
30 base::ObserverListBase<Listener>::Iterator it(&listeners_); 43 base::ObserverListBase<Listener>::Iterator it(&listeners_);
31 Listener* listener; 44 Listener* listener;
32 while ((listener = it.GetNext()) != nullptr) { 45 while ((listener = it.GetNext()) != nullptr) {
33 if (listener->OnSignalStrategyIncomingStanza(stanza.get())) 46 if (listener->OnSignalStrategyIncomingStanza(stanza.get()))
34 break; 47 break;
35 } 48 }
36 } 49 }
37 50
38 void DelegatingSignalStrategy::Connect() { 51 void DelegatingSignalStrategy::Connect() {
52 CHECK(client_task_runner_->BelongsToCurrentThread());
Sergey Ulanov 2016/10/05 21:49:07 Here and below, please use DCHECK instead of CHECK
kelvinp 2016/10/06 00:43:05 Done.
53 FOR_EACH_OBSERVER(
54 Listener, listeners_, OnSignalStrategyStateChange(CONNECTED));
39 } 55 }
40 56
41 void DelegatingSignalStrategy::Disconnect() { 57 void DelegatingSignalStrategy::Disconnect() {
58 CHECK(client_task_runner_->BelongsToCurrentThread());
42 } 59 }
43 60
44 SignalStrategy::State DelegatingSignalStrategy::GetState() const { 61 SignalStrategy::State DelegatingSignalStrategy::GetState() const {
62 CHECK(client_task_runner_->BelongsToCurrentThread());
45 return CONNECTED; 63 return CONNECTED;
46 } 64 }
47 65
48 SignalStrategy::Error DelegatingSignalStrategy::GetError() const { 66 SignalStrategy::Error DelegatingSignalStrategy::GetError() const {
67 CHECK(client_task_runner_->BelongsToCurrentThread());
49 return OK; 68 return OK;
50 } 69 }
51 70
52 std::string DelegatingSignalStrategy::GetLocalJid() const { 71 std::string DelegatingSignalStrategy::GetLocalJid() const {
72 CHECK(client_task_runner_->BelongsToCurrentThread());
53 return local_jid_; 73 return local_jid_;
54 } 74 }
55 75
56 void DelegatingSignalStrategy::AddListener(Listener* listener) { 76 void DelegatingSignalStrategy::AddListener(Listener* listener) {
77 CHECK(client_task_runner_->BelongsToCurrentThread());
57 listeners_.AddObserver(listener); 78 listeners_.AddObserver(listener);
58 } 79 }
59 80
60 void DelegatingSignalStrategy::RemoveListener(Listener* listener) { 81 void DelegatingSignalStrategy::RemoveListener(Listener* listener) {
82 CHECK(client_task_runner_->BelongsToCurrentThread());
61 listeners_.RemoveObserver(listener); 83 listeners_.RemoveObserver(listener);
62 } 84 }
63 85
64 bool DelegatingSignalStrategy::SendStanza( 86 bool DelegatingSignalStrategy::SendStanza(
65 std::unique_ptr<buzz::XmlElement> stanza) { 87 std::unique_ptr<buzz::XmlElement> stanza) {
66 send_iq_callback_.Run(stanza->Str()); 88 CHECK(client_task_runner_->BelongsToCurrentThread());
89 stanza->SetAttr(buzz::QN_FROM, GetLocalJid());
90 delegate_task_runner_->PostTask(
91 FROM_HERE, base::Bind(send_iq_callback_, stanza->Str()));
67 return true; 92 return true;
68 } 93 }
69 94
70 std::string DelegatingSignalStrategy::GetNextId() { 95 std::string DelegatingSignalStrategy::GetNextId() {
71 return base::Uint64ToString(base::RandUint64()); 96 return base::Uint64ToString(base::RandUint64());
72 } 97 }
73 98
74 } // namespace remoting 99 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698