summaryrefslogtreecommitdiffstats
path: root/remoting/jingle_glue/iq_request.cc
diff options
context:
space:
mode:
Diffstat (limited to 'remoting/jingle_glue/iq_request.cc')
-rw-r--r--remoting/jingle_glue/iq_request.cc90
1 files changed, 57 insertions, 33 deletions
diff --git a/remoting/jingle_glue/iq_request.cc b/remoting/jingle_glue/iq_request.cc
index c56ef4c..8d53b40 100644
--- a/remoting/jingle_glue/iq_request.cc
+++ b/remoting/jingle_glue/iq_request.cc
@@ -7,28 +7,42 @@
#include "base/logging.h"
#include "base/message_loop.h"
#include "base/scoped_ptr.h"
-#include "remoting/jingle_glue/jingle_client.h"
#include "third_party/libjingle/source/talk/xmpp/constants.h"
-#include "third_party/libjingle/source/talk/xmpp/xmppengine.h"
+#include "third_party/libjingle/source/talk/xmpp/xmppclient.h"
namespace remoting {
-IqRequest::IqRequest(JingleClient* jingle_client)
- : jingle_client_(jingle_client),
+// static
+buzz::XmlElement* IqRequest::MakeIqStanza(const std::string& type,
+ const std::string& addressee,
+ buzz::XmlElement* iq_body,
+ const std::string& id) {
+ buzz::XmlElement* stanza = new buzz::XmlElement(buzz::QN_IQ);
+ stanza->AddAttr(buzz::QN_TYPE, type);
+ stanza->AddAttr(buzz::QN_TO, addressee);
+ stanza->AddAttr(buzz::QN_ID, id);
+ stanza->AddElement(iq_body);
+ return stanza;
+}
+
+XmppIqRequest::XmppIqRequest(MessageLoop* message_loop,
+ buzz::XmppClient* xmpp_client)
+ : message_loop_(message_loop),
+ xmpp_client_(xmpp_client),
cookie_(NULL) {
- DCHECK(jingle_client_ != NULL);
- DCHECK(MessageLoop::current() == jingle_client_->message_loop());
+ DCHECK(xmpp_client_);
+ DCHECK_EQ(MessageLoop::current(), message_loop_);
}
-IqRequest::~IqRequest() {
- DCHECK(MessageLoop::current() == jingle_client_->message_loop());
+XmppIqRequest::~XmppIqRequest() {
+ DCHECK_EQ(MessageLoop::current(), message_loop_);
Unregister();
}
-void IqRequest::SendIq(const std::string& type,
+void XmppIqRequest::SendIq(const std::string& type,
const std::string& addressee,
buzz::XmlElement* iq_body) {
- DCHECK(MessageLoop::current() == jingle_client_->message_loop());
+ DCHECK_EQ(MessageLoop::current(), message_loop_);
// Unregister the handler if it is already registered.
Unregister();
@@ -36,44 +50,54 @@ void IqRequest::SendIq(const std::string& type,
DCHECK_GT(type.length(), 0U);
DCHECK_GT(addressee.length(), 0U);
- buzz::XmppClient* xmpp_client = jingle_client_->xmpp_client();
- DCHECK(xmpp_client); // Expect that connection is active.
-
scoped_ptr<buzz::XmlElement> stanza(MakeIqStanza(type, addressee, iq_body,
- xmpp_client->NextId()));
+ xmpp_client_->NextId()));
- xmpp_client->engine()->SendIq(stanza.get(), this, &cookie_);
-}
-
-// static
-buzz::XmlElement* IqRequest::MakeIqStanza(const std::string& type,
- const std::string& addressee,
- buzz::XmlElement* iq_body,
- const std::string& id) {
- buzz::XmlElement* stanza = new buzz::XmlElement(buzz::QN_IQ);
- stanza->AddAttr(buzz::QN_TYPE, type);
- stanza->AddAttr(buzz::QN_TO, addressee);
- stanza->AddAttr(buzz::QN_ID, id);
- stanza->AddElement(iq_body);
- return stanza;
+ xmpp_client_->engine()->SendIq(stanza.get(), this, &cookie_);
}
-void IqRequest::Unregister() {
+void XmppIqRequest::Unregister() {
if (cookie_) {
- buzz::XmppClient* xmpp_client = jingle_client_->xmpp_client();
// No need to unregister the handler if the client has been destroyed.
- if (xmpp_client) {
- xmpp_client->engine()->RemoveIqHandler(cookie_, NULL);
+ if (xmpp_client_) {
+ xmpp_client_->engine()->RemoveIqHandler(cookie_, NULL);
}
cookie_ = NULL;
}
}
-void IqRequest::IqResponse(buzz::XmppIqCookie cookie,
+void XmppIqRequest::IqResponse(buzz::XmppIqCookie cookie,
const buzz::XmlElement* stanza) {
if (callback_.get() != NULL) {
callback_->Run(stanza);
}
}
+JavascriptIqRequest::JavascriptIqRequest() {
+}
+
+JavascriptIqRequest::~JavascriptIqRequest() {
+}
+
+void JavascriptIqRequest::SendIq(const std::string& type,
+ const std::string& addressee,
+ buzz::XmlElement* iq_body) {
+ NOTIMPLEMENTED();
+ // TODO(ajwong): The "1" below is completely wrong. Need to change to use a
+ // sequence that just increments or something.
+ scoped_ptr<buzz::XmlElement> stanza(
+ MakeIqStanza(type, addressee, iq_body, "1"));
+
+ xmpp_proxy_->SendIq(stanza->Str());
+}
+
+void JavascriptIqRequest::ReceiveIq(const std::string& iq_response) {
+ // TODO(ajwong): Somehow send this to callback_ here.
+ LOG(ERROR) << "Got IQ!!!!!!\n" << iq_response;
+}
+
+void JavascriptIqRequest::set_callback(ReplyCallback* callback) {
+ callback_.reset(callback);
+}
+
} // namespace remoting