aboutsummaryrefslogtreecommitdiff
path: root/source/QXmppStream.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-02-24 10:33:02 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-02-24 10:33:02 +0000
commit95d3dfef904b3a90b64c8b28f93b3f4c04701048 (patch)
tree99fa0ba9138ad6de46464f921c121f955f690b99 /source/QXmppStream.cpp
parenteaa17977f41d1fa3568540824bf33fd725c40afa (diff)
downloadqxmpp-95d3dfef904b3a90b64c8b28f93b3f4c04701048.tar.gz
replace QXmppIbbTransfer* by QXmppTransferManager
Diffstat (limited to 'source/QXmppStream.cpp')
-rw-r--r--source/QXmppStream.cpp116
1 files changed, 64 insertions, 52 deletions
diff --git a/source/QXmppStream.cpp b/source/QXmppStream.cpp
index d01b4130..05967a47 100644
--- a/source/QXmppStream.cpp
+++ b/source/QXmppStream.cpp
@@ -39,13 +39,12 @@
#include "QXmppInformationRequestResult.h"
#include "QXmppIbbIqs.h"
#include "QXmppRpcIq.h"
-#include "QXmppIbbTransferManager.h"
#include "QXmppArchiveIq.h"
#include "QXmppDiscoveryIq.h"
#include "QXmppPingIq.h"
#include "QXmppLogger.h"
-#include "QXmppUtils.h"
-
+#include "QXmppStreamInitiationIq.h"
+#include "QXmppTransferManager.h"
#include <QDomDocument>
#include <QStringList>
@@ -58,8 +57,10 @@ static const QByteArray streamRootElementEnd = "</stream:stream>";
QXmppStream::QXmppStream(QXmppClient* client)
: QObject(client), m_client(client), m_roster(this),
- m_sessionAvaliable(false), m_vCardManager(m_client),
+ m_sessionAvaliable(false),
m_archiveManager(m_client),
+ m_transferManager(m_client),
+ m_vCardManager(m_client),
m_authStep(0)
{
bool check = QObject::connect(&m_socket, SIGNAL(hostFound()),
@@ -121,6 +122,28 @@ QXmppStream::QXmppStream(QXmppClient* client)
check = QObject::connect(this, SIGNAL(archivePrefIqReceived(const QXmppArchivePrefIq&)),
&m_archiveManager, SLOT(archivePrefIqReceived(const QXmppArchivePrefIq&)));
Q_ASSERT(check);
+
+ // XEP-0047: In-Band Bytestreams
+ check = QObject::connect(this, SIGNAL(iqReceived(const QXmppIq&)),
+ &m_transferManager, SLOT(iqReceived(const QXmppIq&)));
+ Q_ASSERT(check);
+
+ check = QObject::connect(this, SIGNAL(ibbCloseIqReceived(const QXmppIbbCloseIq&)),
+ &m_transferManager, SLOT(ibbCloseIqReceived(const QXmppIbbCloseIq&)));
+ Q_ASSERT(check);
+
+ check = QObject::connect(this, SIGNAL(ibbDataIqReceived(const QXmppIbbDataIq&)),
+ &m_transferManager, SLOT(ibbDataIqReceived(const QXmppIbbDataIq&)));
+ Q_ASSERT(check);
+
+ check = QObject::connect(this, SIGNAL(ibbOpenIqReceived(const QXmppIbbOpenIq&)),
+ &m_transferManager, SLOT(ibbOpenIqReceived(const QXmppIbbOpenIq&)));
+ Q_ASSERT(check);
+
+ // XEP-0095: Stream Initiation
+ check = QObject::connect(this, SIGNAL(streamInitiationIqReceived(const QXmppStreamInitiationIq&)),
+ &m_transferManager, SLOT(streamInitiationIqReceived(const QXmppStreamInitiationIq&)));
+ Q_ASSERT(check);
}
QXmppStream::~QXmppStream()
@@ -433,53 +456,7 @@ void QXmppStream::parser(const QByteArray& data)
QDomElement elemen = nodeRecv.firstChildElement("error");
QXmppStanza::Error error = QXmppStanza::parseError(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( QXmppIbbDataIq::isIbbDataIq( nodeRecv ) &&
- m_client->getIbbTransferManager()->isIbbTransferJobId( id ))
- {
- QXmppIbbDataIq dataIqPacket;
- dataIqPacket.parse(nodeRecv);
-
- 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( QXmppRpcInvokeIq::isRpcInvokeIq( nodeRecv ) )
+ if( QXmppRpcInvokeIq::isRpcInvokeIq( nodeRecv ) )
{
QXmppRpcInvokeIq rpcIqPacket;
rpcIqPacket.parse(nodeRecv);
@@ -625,7 +602,37 @@ void QXmppStream::parser(const QByteArray& data)
sendNonSASLAuth(plainText);
}
}
- // XEP-0136 message archiving
+ // XEP-0047 In-Band Bytestreams
+ else if(QXmppIbbCloseIq::isIbbCloseIq(nodeRecv))
+ {
+ QXmppIbbCloseIq ibbCloseIq;
+ ibbCloseIq.parse(nodeRecv);
+ emit ibbCloseIqReceived(ibbCloseIq);
+ iqPacket = ibbCloseIq;
+ }
+ else if(QXmppIbbDataIq::isIbbDataIq(nodeRecv))
+ {
+ QXmppIbbDataIq ibbDataIq;
+ ibbDataIq.parse(nodeRecv);
+ emit ibbDataIqReceived(ibbDataIq);
+ iqPacket = ibbDataIq;
+ }
+ else if(QXmppIbbOpenIq::isIbbOpenIq(nodeRecv))
+ {
+ QXmppIbbOpenIq ibbOpenIq;
+ ibbOpenIq.parse(nodeRecv);
+ emit ibbOpenIqReceived(ibbOpenIq);
+ iqPacket = ibbOpenIq;
+ }
+ // XEP-0095: Stream Initiation
+ else if(QXmppStreamInitiationIq::isStreamInitiationIq(nodeRecv))
+ {
+ QXmppStreamInitiationIq siIq;
+ siIq.parse(nodeRecv);
+ emit streamInitiationIqReceived(siIq);
+ iqPacket = siIq;
+ }
+ // XEP-0136: Message Archiving
else if(QXmppArchiveChatIq::isArchiveChatIq(nodeRecv))
{
QXmppArchiveChatIq archiveIq;
@@ -1075,3 +1082,8 @@ QXmppArchiveManager& QXmppStream::getArchiveManager()
{
return m_archiveManager;
}
+
+QXmppTransferManager& QXmppStream::getTransferManager()
+{
+ return m_transferManager;
+}