aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-08-28 01:01:00 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-08-28 01:01:00 +0000
commit07d0e72d6e7f9fa73d49c2f779206abf79f4a5a7 (patch)
treee20c174dedb6ae53dffdc30bb7311b8f074bae3a /src
parent60756b31285d65add73efaad39a44617ecce76db (diff)
downloadqxmpp-07d0e72d6e7f9fa73d49c2f779206abf79f4a5a7.tar.gz
Improve Service Discovery
Diffstat (limited to 'src')
-rw-r--r--src/QXmppServerExtension.cpp11
-rw-r--r--src/QXmppServerExtension.h1
-rw-r--r--src/server/mod_disco.cpp11
3 files changed, 18 insertions, 5 deletions
diff --git a/src/QXmppServerExtension.cpp b/src/QXmppServerExtension.cpp
index 120ce6b7..76638397 100644
--- a/src/QXmppServerExtension.cpp
+++ b/src/QXmppServerExtension.cpp
@@ -26,7 +26,7 @@
#include "QXmppServerExtension.h"
-/// Returns the features this extension implements.
+/// Returns the discovery features to add to the server.
///
QStringList QXmppServerExtension::discoveryFeatures() const
@@ -34,6 +34,15 @@ QStringList QXmppServerExtension::discoveryFeatures() const
return QStringList();
}
+/// Returns the discovery items to add to the server.
+///
+
+QStringList QXmppServerExtension::discoveryItems() const
+{
+ return QStringList();
+}
+
+
/// Returns the extension's name.
///
diff --git a/src/QXmppServerExtension.h b/src/QXmppServerExtension.h
index a35873a9..0b1e6e56 100644
--- a/src/QXmppServerExtension.h
+++ b/src/QXmppServerExtension.h
@@ -44,6 +44,7 @@ public:
QString extensionName() const;
virtual QStringList discoveryFeatures() const;
+ virtual QStringList discoveryItems() const;
virtual bool handleStanza(QXmppStream *stream, const QDomElement &stanza);
virtual QStringList presenceSubscribers(const QString &jid);
virtual bool start(QXmppServer *server);
diff --git a/src/server/mod_disco.cpp b/src/server/mod_disco.cpp
index c6377f99..fe257cf6 100644
--- a/src/server/mod_disco.cpp
+++ b/src/server/mod_disco.cpp
@@ -68,11 +68,14 @@ bool QXmppServerDiscovery::handleStanza(QXmppStream *incoming, const QDomElement
if (request.queryType() == QXmppDiscoveryIq::ItemsQuery)
{
QList<QXmppDiscoveryIq::Item> items;
- foreach (const QString &jid, m_discoveryItems)
+ foreach (QXmppServerExtension *extension, m_server->loadedExtensions())
{
- QXmppDiscoveryIq::Item item;
- item.setJid(jid);
- items.append(item);
+ foreach (const QString &jid, extension->discoveryItems())
+ {
+ QXmppDiscoveryIq::Item item;
+ item.setJid(jid);
+ items.append(item);
+ }
}
response.setItems(items);
} else {