diff options
Diffstat (limited to 'remoting/jingle_glue/iq_request.cc')
-rw-r--r-- | remoting/jingle_glue/iq_request.cc | 90 |
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 |