aboutsummaryrefslogtreecommitdiff
path: root/source/QXmppStream.cpp
diff options
context:
space:
mode:
authorManjeet Dahiya <manjeetdahiya@gmail.com>2009-10-27 12:04:03 +0000
committerManjeet Dahiya <manjeetdahiya@gmail.com>2009-10-27 12:04:03 +0000
commit10c093a617929db5c6b201dbf03d6070b12b36b4 (patch)
treed9b1c4507fdb1969c3225f27b4632258c4916dc0 /source/QXmppStream.cpp
parent239b2b15c3cfd9e4d7cc085ed31645d6ae6942ee (diff)
downloadqxmpp-10c093a617929db5c6b201dbf03d6070b12b36b4.tar.gz
Issue 15: Implement XEP-0047
Diffstat (limited to 'source/QXmppStream.cpp')
-rw-r--r--source/QXmppStream.cpp55
1 files changed, 52 insertions, 3 deletions
diff --git a/source/QXmppStream.cpp b/source/QXmppStream.cpp
index 44d8c5f2..4405e3b4 100644
--- a/source/QXmppStream.cpp
+++ b/source/QXmppStream.cpp
@@ -37,8 +37,12 @@
#include "QXmppVCard.h"
#include "QXmppNonSASLAuth.h"
#include "QXmppInformationRequestResult.h"
+#include "QXmppIbbIqs.h"
+#include "QXmppDataIq.h"
+#include "QXmppIbbTransferManager.h"
#include "QXmppLogger.h"
+
#include <QDomDocument>
#include <QStringList>
#include <QRegExp>
@@ -216,10 +220,11 @@ void QXmppStream::parser(const QByteArray& data)
{
//TODO: Make a login error here.
}
-
while(!nodeRecv.isNull())
{
+
QString ns = nodeRecv.namespaceURI();
+ log("Namespace: " + ns + " Tag: " + nodeRecv.tagName() );
if(ns == ns_stream && nodeRecv.tagName() == "features")
{
bool nonSaslAvailable = nodeRecv.firstChildElement("auth").
@@ -365,12 +370,56 @@ void QXmppStream::parser(const QByteArray& data)
qWarning("QXmppStream: iq type can't be empty");
QXmppIq iqPacket; // to emit
-
QDomElement elemen = nodeRecv.firstChildElement("error");
QXmppStanza::Error error = parseStanzaError(elemen);
+ if( QXmppIbbOpenIq::isIbbOpenIq( nodeRecv ) )
+ {
+ QXmppIbbOpenIq openIqPacket;
+ openIqPacket.parse( nodeRecv );
+
+ QXmppIbbTransferJob *mgr = m_client->getIbbTransferManager()->
+ getIbbTransferJob(openIqPacket.getId());
+ mgr->gotOpen( openIqPacket );
+ }
+ else if( QXmppIbbErrorIq::isIbbErrorIq( nodeRecv ) &&
+ m_client->getIbbTransferManager()->isIbbTransferJobId( id ))
+ {
+ QXmppIbbErrorIq errorIqPacket;
+ errorIqPacket.parse(nodeRecv);
+
+ QXmppIbbTransferJob *mgr = m_client->getIbbTransferManager()->
+ getIbbTransferJob(errorIqPacket.getId());
+ mgr->gotError( errorIqPacket );
+ }
+ else if( QXmppIbbAckIq::isIbbAckIq( nodeRecv ) &&
+ m_client->getIbbTransferManager()->isIbbTransferJobId( id ))
+ {
+ QXmppIbbAckIq ackIqPacket;
+ ackIqPacket.parse(nodeRecv);
+
+ QXmppIbbTransferJob *mgr = m_client->getIbbTransferManager()->getIbbTransferJob(ackIqPacket.getId());
+ mgr->gotAck();
+ }
+ else if( QXmppDataIq::isDataIq( nodeRecv ) &&
+ m_client->getIbbTransferManager()->isIbbTransferJobId( id ))
+ {
+ QXmppDataIq dataIqPacket;
+ dataIqPacket.parse(nodeRecv);
- if(id == m_sessionId)
+ QXmppIbbTransferJob *mgr = m_client->getIbbTransferManager()->getIbbTransferJob(dataIqPacket.getId());
+ mgr->gotData(dataIqPacket);
+ }
+ else if( QXmppIbbCloseIq::isIbbCloseIq( nodeRecv ) &&
+ m_client->getIbbTransferManager()->isIbbTransferJobId( id ))
+ {
+ QXmppIbbCloseIq closeIqPacket;
+ closeIqPacket.parse(nodeRecv);
+
+ QXmppIbbTransferJob *mgr = m_client->getIbbTransferManager()->getIbbTransferJob(closeIqPacket.getId());
+ mgr->gotClose(closeIqPacket);
+ }
+ else if(id == m_sessionId)
{
// get back add configuration whether to send
// roster and intial presence in beginning