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

Unified Diff: remoting/jingle_glue/xmpp_signal_strategy.cc

Issue 8432009: Refactor IqRequest. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 9 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
Index: remoting/jingle_glue/xmpp_signal_strategy.cc
diff --git a/remoting/jingle_glue/xmpp_signal_strategy.cc b/remoting/jingle_glue/xmpp_signal_strategy.cc
index f68a885b483145cc05cb6a7debf763258a61541e..f85569fca837cd5070b4f395d7573c536f4b1f29 100644
--- a/remoting/jingle_glue/xmpp_signal_strategy.cc
+++ b/remoting/jingle_glue/xmpp_signal_strategy.cc
@@ -6,7 +6,6 @@
#include "base/logging.h"
#include "jingle/notifier/base/gaia_token_pre_xmpp_auth.h"
-#include "remoting/jingle_glue/iq_request.h"
#include "remoting/jingle_glue/jingle_thread.h"
#include "remoting/jingle_glue/xmpp_socket_adapter.h"
#include "third_party/libjingle/source/talk/base/asyncsocket.h"
@@ -24,12 +23,11 @@ XmppSignalStrategy::XmppSignalStrategy(JingleThread* jingle_thread,
auth_token_(auth_token),
auth_token_service_(auth_token_service),
xmpp_client_(NULL),
- observer_(NULL),
- listener_(NULL) {
+ observer_(NULL) {
}
XmppSignalStrategy::~XmppSignalStrategy() {
- DCHECK(listener_ == NULL);
+ DCHECK(listeners_.empty());
Close();
}
@@ -69,20 +67,29 @@ void XmppSignalStrategy::Close() {
}
}
-void XmppSignalStrategy::SetListener(Listener* listener) {
- // Don't overwrite an listener without explicitly going
- // through "NULL" first.
- DCHECK(listener_ == NULL || listener == NULL);
- listener_ = listener;
+void XmppSignalStrategy::AddListener(Listener* listener) {
+ DCHECK(std::find(listeners_.begin(), listeners_.end(), listener) ==
+ listeners_.end());
+ listeners_.push_back(listener);
}
-void XmppSignalStrategy::SendStanza(buzz::XmlElement* stanza) {
+void XmppSignalStrategy::RemoveListener(Listener* listener) {
+ std::vector<Listener*>::iterator it =
+ std::find(listeners_.begin(), listeners_.end(), listener);
+ CHECK(it != listeners_.end());
+ listeners_.erase(it);
+}
+
+bool XmppSignalStrategy::SendStanza(buzz::XmlElement* stanza) {
if (!xmpp_client_) {
LOG(INFO) << "Dropping signalling message because XMPP "
"connection has been terminated.";
- return;
+ delete stanza;
+ return false;
}
- xmpp_client_->SendStanza(stanza);
+
+ buzz::XmppReturnStatus status = xmpp_client_->SendStanza(stanza);
+ return status == buzz::XMPP_RETURN_OK || status == buzz::XMPP_RETURN_PENDING;
}
std::string XmppSignalStrategy::GetNextId() {
@@ -94,14 +101,13 @@ std::string XmppSignalStrategy::GetNextId() {
return xmpp_client_->NextId();
}
-IqRequest* XmppSignalStrategy::CreateIqRequest() {
- return new IqRequest(this, &iq_registry_);
-}
-
bool XmppSignalStrategy::HandleStanza(const buzz::XmlElement* stanza) {
- if (listener_ && listener_->OnIncomingStanza(stanza))
- return true;
- return iq_registry_.OnIncomingStanza(stanza);
+ for (std::vector<Listener*>::iterator it = listeners_.begin();
+ it != listeners_.end(); ++it) {
+ if ((*it)->OnIncomingStanza(stanza))
+ return true;
+ }
+ return false;
}
void XmppSignalStrategy::OnConnectionStateChanged(

Powered by Google App Engine
This is Rietveld 408576698