aboutsummaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-02-11 07:56:40 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-02-11 07:56:40 +0000
commit629b537d6b597f116f8f385859384bb59c1b5634 (patch)
tree2c14f27f578c65e7d79e94a95ccd4c11c302c14d /source
parente386059f004474d4ffa32a9573a3f36dbec4439b (diff)
downloadqxmpp-629b537d6b597f116f8f385859384bb59c1b5634.tar.gz
integrate support for XEP-0030 : Service Discovery
Diffstat (limited to 'source')
-rw-r--r--source/QXmppClient.cpp5
-rw-r--r--source/QXmppClient.h4
-rw-r--r--source/QXmppStream.cpp8
-rw-r--r--source/QXmppStream.h3
4 files changed, 20 insertions, 0 deletions
diff --git a/source/QXmppClient.cpp b/source/QXmppClient.cpp
index 9794ea24..12f58364 100644
--- a/source/QXmppClient.cpp
+++ b/source/QXmppClient.cpp
@@ -53,6 +53,11 @@ QXmppClient::QXmppClient(QObject *parent)
check = connect(m_stream, SIGNAL(iqReceived(const QXmppIq&)), this,
SIGNAL(iqReceived(const QXmppIq&)));
+ Q_ASSERT(check);
+
+ check = connect(m_stream, SIGNAL(discoveryIqReceived(const QXmppDiscoveryIq&)), this,
+ SIGNAL(discoveryIqReceived(const QXmppDiscoveryIq&)));
+ Q_ASSERT(check);
check = connect(m_stream, SIGNAL(disconnected()), this,
SIGNAL(disconnected()));
diff --git a/source/QXmppClient.h b/source/QXmppClient.h
index 52139fe9..1692e6fb 100644
--- a/source/QXmppClient.h
+++ b/source/QXmppClient.h
@@ -61,6 +61,7 @@ class QXmppRemoteMethod;
class QXmppIbbTransferManager;
class QXmppRemoteMethodResult;
class QXmppArchiveManager;
+class QXmppDiscoveryIq;
class QXmppClient : public QObject
{
@@ -166,6 +167,9 @@ signals:
/// management, setting-getting vCards etc is done using iq stanzas.
void iqReceived(const QXmppIq&);
+ /// Notifies that an XMPP service discovery iq stanza is received.
+ void discoveryIqReceived(const QXmppDiscoveryIq&);
+
public:
QAbstractSocket::SocketError getSocketError();
diff --git a/source/QXmppStream.cpp b/source/QXmppStream.cpp
index 1954b6bc..c0bc03d3 100644
--- a/source/QXmppStream.cpp
+++ b/source/QXmppStream.cpp
@@ -42,6 +42,7 @@
#include "QXmppRpcIq.h"
#include "QXmppIbbTransferManager.h"
#include "QXmppArchiveIq.h"
+#include "QXmppDiscoveryIq.h"
#include "QXmppPingIq.h"
#include "QXmppLogger.h"
#include "QXmppUtils.h"
@@ -546,6 +547,13 @@ void QXmppStream::parser(const QByteArray& data)
qxmppFeatures.setFrom(to);
sendPacket(qxmppFeatures);
}
+ else if(QXmppDiscoveryIq::isDiscoveryIq(nodeRecv))
+ {
+ QXmppDiscoveryIq discoIq;
+ discoIq.parse(nodeRecv);
+ emit discoveryIqReceived(discoIq);
+ iqPacket = discoIq;
+ }
else if(id == m_nonSASLAuthId && type == "result")
{
// successful Non-SASL Authentication
diff --git a/source/QXmppStream.h b/source/QXmppStream.h
index 469b51e6..a9242f7d 100644
--- a/source/QXmppStream.h
+++ b/source/QXmppStream.h
@@ -49,6 +49,7 @@ class QXmppRpcErrorIq;
class QXmppArchiveChatIq;
class QXmppArchiveListIq;
class QXmppArchivePrefIq;
+class QXmppDiscoveryIq;
class QXmppStream : public QObject
{
@@ -98,6 +99,8 @@ signals:
void archiveListIqReceived(const QXmppArchiveListIq&);
void archivePrefIqReceived(const QXmppArchivePrefIq&);
+ void discoveryIqReceived(const QXmppDiscoveryIq&);
+
private slots:
void socketHostFound();
void socketReadReady();