aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-12-10 16:55:26 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-12-10 16:55:26 +0000
commit11ede72dab43015a9c295104e2defe35ec9e368b (patch)
tree15d6e1298b6e71cbbb91ad5153aa77d6d600005a /src
parent322725554e52c46638481c34ee6f652d173c58f4 (diff)
downloadqxmpp-11ede72dab43015a9c295104e2defe35ec9e368b.tar.gz
don't hardcode RPC discovery identity, move it to QXmppRpcManager
Diffstat (limited to 'src')
-rw-r--r--src/QXmppClientExtension.cpp8
-rw-r--r--src/QXmppClientExtension.h2
-rw-r--r--src/QXmppDiscoveryManager.cpp15
-rw-r--r--src/QXmppRpcManager.cpp9
-rw-r--r--src/QXmppRpcManager.h1
5 files changed, 27 insertions, 8 deletions
diff --git a/src/QXmppClientExtension.cpp b/src/QXmppClientExtension.cpp
index d0d23749..c81eff44 100644
--- a/src/QXmppClientExtension.cpp
+++ b/src/QXmppClientExtension.cpp
@@ -56,6 +56,14 @@ QStringList QXmppClientExtension::discoveryFeatures() const
return QStringList();
}
+/// Returns the discovery identities to add to the client.
+///
+
+QList<QXmppDiscoveryIq::Identity> QXmppClientExtension::discoveryIdentities() const
+{
+ return QList<QXmppDiscoveryIq::Identity>();
+}
+
/// Returns the client which loaded this extension.
///
diff --git a/src/QXmppClientExtension.h b/src/QXmppClientExtension.h
index 42da8ef4..7bfe6296 100644
--- a/src/QXmppClientExtension.h
+++ b/src/QXmppClientExtension.h
@@ -24,6 +24,7 @@
#ifndef QXMPPCLIENTEXTENSION_H
#define QXMPPCLIENTEXTENSION_H
+#include "QXmppDiscoveryIq.h"
#include "QXmppLogger.h"
class QDomElement;
@@ -46,6 +47,7 @@ public:
virtual ~QXmppClientExtension();
virtual QStringList discoveryFeatures() const;
+ virtual QList<QXmppDiscoveryIq::Identity> discoveryIdentities() const;
/// \brief Handles the incoming XMPP \a stanza.
///
diff --git a/src/QXmppDiscoveryManager.cpp b/src/QXmppDiscoveryManager.cpp
index e09a2318..ca00c5c3 100644
--- a/src/QXmppDiscoveryManager.cpp
+++ b/src/QXmppDiscoveryManager.cpp
@@ -137,19 +137,20 @@ QXmppDiscoveryIq QXmppDiscoveryManager::capabilities()
iq.setFeatures(features);
- // TODO: get identities from the extensions itself like the features
// identities
QList<QXmppDiscoveryIq::Identity> identities;
- QXmppDiscoveryIq::Identity identity;
-
- identity.setCategory("automation");
- identity.setType("rpc");
- identities.append(identity);
+ QXmppDiscoveryIq::Identity identity;
identity.setCategory(clientCategory());
identity.setType(clientType());
identity.setName(clientName());
- identities.append(identity);
+ identities << identity;
+
+ foreach(QXmppClientExtension* extension, client()->extensions())
+ {
+ if(extension)
+ identities << extension->discoveryIdentities();
+ }
iq.setIdentities(identities);
return iq;
diff --git a/src/QXmppRpcManager.cpp b/src/QXmppRpcManager.cpp
index e56a41c6..06c58451 100644
--- a/src/QXmppRpcManager.cpp
+++ b/src/QXmppRpcManager.cpp
@@ -69,7 +69,6 @@ void QXmppRpcManager::invokeInterfaceMethod( const QXmppRpcInvokeIq &iq )
{
error.setType(QXmppStanza::Error::Cancel);
error.setCondition(QXmppStanza::Error::ItemNotFound);
-
}
}
else
@@ -131,6 +130,14 @@ QStringList QXmppRpcManager::discoveryFeatures() const
return QStringList() << ns_rpc;
}
+QList<QXmppDiscoveryIq::Identity> QXmppRpcManager::discoveryIdentities() const
+{
+ QXmppDiscoveryIq::Identity identity;
+ identity.setCategory("automation");
+ identity.setType("rpc");
+ return QList<QXmppDiscoveryIq::Identity>() << identity;
+}
+
bool QXmppRpcManager::handleStanza(const QDomElement &element)
{
// XEP-0009: Jabber-RPC
diff --git a/src/QXmppRpcManager.h b/src/QXmppRpcManager.h
index a8b08de8..a44e043b 100644
--- a/src/QXmppRpcManager.h
+++ b/src/QXmppRpcManager.h
@@ -58,6 +58,7 @@ public:
/// \cond
QStringList discoveryFeatures() const;
+ virtual QList<QXmppDiscoveryIq::Identity> discoveryIdentities() const;
bool handleStanza(const QDomElement &element);
/// \endcond