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

Unified 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/signaling/delegating_signal_strategy.h ('k') | remoting/signaling/fake_signal_strategy.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/signaling/delegating_signal_strategy.cc
diff --git a/remoting/client/plugin/delegating_signal_strategy.cc b/remoting/signaling/delegating_signal_strategy.cc
similarity index 55%
rename from remoting/client/plugin/delegating_signal_strategy.cc
rename to remoting/signaling/delegating_signal_strategy.cc
index bc86f41b0d38faddf42816735e5312d80899d654..e329a2047df589480932740d32bee2b02dbd8c9a 100644
--- a/remoting/client/plugin/delegating_signal_strategy.cc
+++ b/remoting/signaling/delegating_signal_strategy.cc
@@ -2,25 +2,36 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "remoting/client/plugin/delegating_signal_strategy.h"
+#include "remoting/signaling/delegating_signal_strategy.h"
+#include "base/bind.h"
#include "base/rand_util.h"
#include "base/strings/string_number_conversions.h"
#include "third_party/webrtc/libjingle/xmllite/xmlelement.h"
+#include "third_party/webrtc/libjingle/xmpp/constants.h"
namespace remoting {
DelegatingSignalStrategy::DelegatingSignalStrategy(
std::string local_jid,
+ scoped_refptr<base::SingleThreadTaskRunner> client_task_runner,
const SendIqCallback& send_iq_callback)
: local_jid_(local_jid),
- send_iq_callback_(send_iq_callback) {
-}
+ delegate_task_runner_(base::ThreadTaskRunnerHandle::Get()),
+ client_task_runner_(client_task_runner),
+ send_iq_callback_(send_iq_callback),
+ weak_factory_(this) {}
-DelegatingSignalStrategy::~DelegatingSignalStrategy() {
-}
+DelegatingSignalStrategy::~DelegatingSignalStrategy() {}
void DelegatingSignalStrategy::OnIncomingMessage(const std::string& message) {
+ if (!client_task_runner_->BelongsToCurrentThread()) {
+ client_task_runner_->PostTask(
+ FROM_HERE, base::Bind(&DelegatingSignalStrategy::OnIncomingMessage,
+ weak_factory_.GetWeakPtr(), message));
+ return;
+ }
+
std::unique_ptr<buzz::XmlElement> stanza(buzz::XmlElement::ForStr(message));
if (!stanza.get()) {
LOG(WARNING) << "Malformed XMPP stanza received: " << message;
@@ -36,34 +47,46 @@ void DelegatingSignalStrategy::OnIncomingMessage(const std::string& message) {
}
void DelegatingSignalStrategy::Connect() {
+ DCHECK(client_task_runner_->BelongsToCurrentThread());
+ FOR_EACH_OBSERVER(Listener, listeners_,
+ OnSignalStrategyStateChange(CONNECTED));
}
void DelegatingSignalStrategy::Disconnect() {
+ DCHECK(client_task_runner_->BelongsToCurrentThread());
}
SignalStrategy::State DelegatingSignalStrategy::GetState() const {
+ DCHECK(client_task_runner_->BelongsToCurrentThread());
return CONNECTED;
}
SignalStrategy::Error DelegatingSignalStrategy::GetError() const {
+ DCHECK(client_task_runner_->BelongsToCurrentThread());
return OK;
}
std::string DelegatingSignalStrategy::GetLocalJid() const {
+ DCHECK(client_task_runner_->BelongsToCurrentThread());
return local_jid_;
}
void DelegatingSignalStrategy::AddListener(Listener* listener) {
+ DCHECK(client_task_runner_->BelongsToCurrentThread());
listeners_.AddObserver(listener);
}
void DelegatingSignalStrategy::RemoveListener(Listener* listener) {
+ DCHECK(client_task_runner_->BelongsToCurrentThread());
listeners_.RemoveObserver(listener);
}
bool DelegatingSignalStrategy::SendStanza(
std::unique_ptr<buzz::XmlElement> stanza) {
- send_iq_callback_.Run(stanza->Str());
+ DCHECK(client_task_runner_->BelongsToCurrentThread());
+ stanza->SetAttr(buzz::QN_FROM, GetLocalJid());
+ delegate_task_runner_->PostTask(FROM_HERE,
+ base::Bind(send_iq_callback_, stanza->Str()));
return true;
}
« 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