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

Unified Diff: remoting/jingle_glue/javascript_signal_strategy.cc

Issue 9005034: Refactor SignalStrategy so that it can be reused for multiple connections. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 8 years, 12 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
Index: remoting/jingle_glue/javascript_signal_strategy.cc
diff --git a/remoting/jingle_glue/javascript_signal_strategy.cc b/remoting/jingle_glue/javascript_signal_strategy.cc
index a26a385bc8fa1013ecf72b9f222b3758c49a5705..15a5d898f63ff5b9b3ae059495479a27f64c3ea9 100644
--- a/remoting/jingle_glue/javascript_signal_strategy.cc
+++ b/remoting/jingle_glue/javascript_signal_strategy.cc
@@ -13,59 +13,57 @@
namespace remoting {
-JavascriptSignalStrategy::JavascriptSignalStrategy(const std::string& your_jid)
- : your_jid_(your_jid),
+JavascriptSignalStrategy::JavascriptSignalStrategy(const std::string& local_jid)
+ : local_jid_(local_jid),
last_id_(0) {
}
JavascriptSignalStrategy::~JavascriptSignalStrategy() {
- DCHECK(listeners_.empty());
- Close();
+ DCHECK_EQ(listeners_.size(), 0U);
+ Disconnect();
}
void JavascriptSignalStrategy::AttachXmppProxy(
scoped_refptr<XmppProxy> xmpp_proxy) {
DCHECK(CalledOnValidThread());
xmpp_proxy_ = xmpp_proxy;
- xmpp_proxy_->AttachCallback(AsWeakPtr());
}
-void JavascriptSignalStrategy::Init(StatusObserver* observer) {
+void JavascriptSignalStrategy::Connect() {
DCHECK(CalledOnValidThread());
- // Blast through each state since for a JavascriptSignalStrategy, we're
- // already connected.
- //
- // TODO(ajwong): Clarify the status API contract to see if we have to actually
- // walk through each state.
- observer->OnStateChange(StatusObserver::START);
- observer->OnStateChange(StatusObserver::CONNECTING);
- observer->OnJidChange(your_jid_);
- observer->OnStateChange(StatusObserver::CONNECTED);
+ xmpp_proxy_->AttachCallback(AsWeakPtr());
+ FOR_EACH_OBSERVER(Listener, listeners_,
+ OnSignalStrategyStateChange(CONNECTED));
}
-void JavascriptSignalStrategy::Close() {
+void JavascriptSignalStrategy::Disconnect() {
DCHECK(CalledOnValidThread());
- if (xmpp_proxy_) {
+ if (xmpp_proxy_)
xmpp_proxy_->DetachCallback();
- xmpp_proxy_ = NULL;
- }
+ FOR_EACH_OBSERVER(Listener, listeners_,
+ OnSignalStrategyStateChange(DISCONNECTED));
+}
+
+SignalStrategy::State JavascriptSignalStrategy::GetState() const {
+ // TODO(sergeyu): Extend XmppProxy to provide status of the
+ // connection.
+ return CONNECTED;
+}
+
+std::string JavascriptSignalStrategy::GetLocalJid() const {
+ return local_jid_;
}
void JavascriptSignalStrategy::AddListener(Listener* listener) {
DCHECK(CalledOnValidThread());
- DCHECK(std::find(listeners_.begin(), listeners_.end(), listener) ==
- listeners_.end());
- listeners_.push_back(listener);
+ listeners_.AddObserver(listener);
}
void JavascriptSignalStrategy::RemoveListener(Listener* listener) {
DCHECK(CalledOnValidThread());
- std::vector<Listener*>::iterator it =
- std::find(listeners_.begin(), listeners_.end(), listener);
- CHECK(it != listeners_.end());
- listeners_.erase(it);
+ listeners_.RemoveObserver(listener);
}
bool JavascriptSignalStrategy::SendStanza(buzz::XmlElement* stanza) {
@@ -89,9 +87,10 @@ void JavascriptSignalStrategy::OnIq(const std::string& stanza_str) {
return;
}
- for (std::vector<Listener*>::iterator it = listeners_.begin();
- it != listeners_.end(); ++it) {
- if ((*it)->OnIncomingStanza(stanza.get()))
+ ObserverListBase<Listener>::Iterator it(listeners_);
+ Listener* listener;
+ while ((listener = it.GetNext()) != NULL) {
+ if (listener->OnSignalStrategyIncomingStanza(stanza.get()))
break;
}
}
« no previous file with comments | « remoting/jingle_glue/javascript_signal_strategy.h ('k') | remoting/jingle_glue/jingle_signaling_connector.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698