diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-12-10 16:55:26 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-12-10 16:55:26 +0000 |
| commit | 11ede72dab43015a9c295104e2defe35ec9e368b (patch) | |
| tree | 15d6e1298b6e71cbbb91ad5153aa77d6d600005a /src | |
| parent | 322725554e52c46638481c34ee6f652d173c58f4 (diff) | |
| download | qxmpp-11ede72dab43015a9c295104e2defe35ec9e368b.tar.gz | |
don't hardcode RPC discovery identity, move it to QXmppRpcManager
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppClientExtension.cpp | 8 | ||||
| -rw-r--r-- | src/QXmppClientExtension.h | 2 | ||||
| -rw-r--r-- | src/QXmppDiscoveryManager.cpp | 15 | ||||
| -rw-r--r-- | src/QXmppRpcManager.cpp | 9 | ||||
| -rw-r--r-- | src/QXmppRpcManager.h | 1 |
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 |
