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

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

Issue 2384063008: Enables delegating signal strategy for It2Me Host. (Closed)
Patch Set: Fix typos 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> client_task_runner,
15 const SendIqCallback& send_iq_callback) 18 const SendIqCallback& send_iq_callback)
16 : local_jid_(local_jid), 19 : local_jid_(local_jid),
17 send_iq_callback_(send_iq_callback) { 20 delegate_task_runner_(base::ThreadTaskRunnerHandle::Get()),
18 } 21 client_task_runner_(client_task_runner),
22 send_iq_callback_(send_iq_callback),
23 weak_factory_(this) {}
19 24
20 DelegatingSignalStrategy::~DelegatingSignalStrategy() { 25 DelegatingSignalStrategy::~DelegatingSignalStrategy() {}
21 }
22 26
23 void DelegatingSignalStrategy::OnIncomingMessage(const std::string& message) { 27 void DelegatingSignalStrategy::OnIncomingMessage(const std::string& message) {
28 if (!client_task_runner_->BelongsToCurrentThread()) {
29 client_task_runner_->PostTask(
30 FROM_HERE, base::Bind(&DelegatingSignalStrategy::OnIncomingMessage,
31 weak_factory_.GetWeakPtr(), message));
32 return;
33 }
34
24 std::unique_ptr<buzz::XmlElement> stanza(buzz::XmlElement::ForStr(message)); 35 std::unique_ptr<buzz::XmlElement> stanza(buzz::XmlElement::ForStr(message));
25 if (!stanza.get()) { 36 if (!stanza.get()) {
26 LOG(WARNING) << "Malformed XMPP stanza received: " << message; 37 LOG(WARNING) << "Malformed XMPP stanza received: " << message;
27 return; 38 return;
28 } 39 }
29 40
30 base::ObserverListBase<Listener>::Iterator it(&listeners_); 41 base::ObserverListBase<Listener>::Iterator it(&listeners_);
31 Listener* listener; 42 Listener* listener;
32 while ((listener = it.GetNext()) != nullptr) { 43 while ((listener = it.GetNext()) != nullptr) {
33 if (listener->OnSignalStrategyIncomingStanza(stanza.get())) 44 if (listener->OnSignalStrategyIncomingStanza(stanza.get()))
34 break; 45 break;
35 } 46 }
36 } 47 }
37 48
38 void DelegatingSignalStrategy::Connect() { 49 void DelegatingSignalStrategy::Connect() {
50 DCHECK(client_task_runner_->BelongsToCurrentThread());
51 FOR_EACH_OBSERVER(Listener, listeners_,
52 OnSignalStrategyStateChange(CONNECTED));
39 } 53 }
40 54
41 void DelegatingSignalStrategy::Disconnect() { 55 void DelegatingSignalStrategy::Disconnect() {
56 DCHECK(client_task_runner_->BelongsToCurrentThread());
42 } 57 }
43 58
44 SignalStrategy::State DelegatingSignalStrategy::GetState() const { 59 SignalStrategy::State DelegatingSignalStrategy::GetState() const {
60 DCHECK(client_task_runner_->BelongsToCurrentThread());
45 return CONNECTED; 61 return CONNECTED;
46 } 62 }
47 63
48 SignalStrategy::Error DelegatingSignalStrategy::GetError() const { 64 SignalStrategy::Error DelegatingSignalStrategy::GetError() const {
65 DCHECK(client_task_runner_->BelongsToCurrentThread());
49 return OK; 66 return OK;
50 } 67 }
51 68
52 std::string DelegatingSignalStrategy::GetLocalJid() const { 69 std::string DelegatingSignalStrategy::GetLocalJid() const {
70 DCHECK(client_task_runner_->BelongsToCurrentThread());
53 return local_jid_; 71 return local_jid_;
54 } 72 }
55 73
56 void DelegatingSignalStrategy::AddListener(Listener* listener) { 74 void DelegatingSignalStrategy::AddListener(Listener* listener) {
75 DCHECK(client_task_runner_->BelongsToCurrentThread());
57 listeners_.AddObserver(listener); 76 listeners_.AddObserver(listener);
58 } 77 }
59 78
60 void DelegatingSignalStrategy::RemoveListener(Listener* listener) { 79 void DelegatingSignalStrategy::RemoveListener(Listener* listener) {
80 DCHECK(client_task_runner_->BelongsToCurrentThread());
61 listeners_.RemoveObserver(listener); 81 listeners_.RemoveObserver(listener);
62 } 82 }
63 83
64 bool DelegatingSignalStrategy::SendStanza( 84 bool DelegatingSignalStrategy::SendStanza(
65 std::unique_ptr<buzz::XmlElement> stanza) { 85 std::unique_ptr<buzz::XmlElement> stanza) {
66 send_iq_callback_.Run(stanza->Str()); 86 DCHECK(client_task_runner_->BelongsToCurrentThread());
87 stanza->SetAttr(buzz::QN_FROM, GetLocalJid());
88 delegate_task_runner_->PostTask(FROM_HERE,
89 base::Bind(send_iq_callback_, stanza->Str()));
67 return true; 90 return true;
68 } 91 }
69 92
70 std::string DelegatingSignalStrategy::GetNextId() { 93 std::string DelegatingSignalStrategy::GetNextId() {
71 return base::Uint64ToString(base::RandUint64()); 94 return base::Uint64ToString(base::RandUint64());
72 } 95 }
73 96
74 } // namespace remoting 97 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/signaling/delegating_signal_strategy.h ('k') | remoting/signaling/fake_signal_strategy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698