From 11ede72dab43015a9c295104e2defe35ec9e368b Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Fri, 10 Dec 2010 16:55:26 +0000 Subject: don't hardcode RPC discovery identity, move it to QXmppRpcManager --- src/QXmppClientExtension.cpp | 8 ++++++++ src/QXmppClientExtension.h | 2 ++ src/QXmppDiscoveryManager.cpp | 15 ++++++++------- src/QXmppRpcManager.cpp | 9 ++++++++- src/QXmppRpcManager.h | 1 + 5 files changed, 27 insertions(+), 8 deletions(-) (limited to 'src') 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 QXmppClientExtension::discoveryIdentities() const +{ + return QList(); +} + /// 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 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 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 QXmppRpcManager::discoveryIdentities() const +{ + QXmppDiscoveryIq::Identity identity; + identity.setCategory("automation"); + identity.setType("rpc"); + return QList() << 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 discoveryIdentities() const; bool handleStanza(const QDomElement &element); /// \endcond -- cgit v1.2.3