diff options
| author | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-14 16:19:41 +0000 |
|---|---|---|
| committer | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-14 16:19:41 +0000 |
| commit | 570d45311fc7f493f60dac7a271245bc123c7b4d (patch) | |
| tree | 3fd5260b394a516b5c5c97a079975e4614602017 /src | |
| parent | 020ff45efd9ada776dd8a7e35dbe6792c9dd264b (diff) | |
| download | qxmpp-570d45311fc7f493f60dac7a271245bc123c7b4d.tar.gz | |
* use capabilities() from the discoveryManager
* move presenceExtensions() from outgoingClientStream to clientPrivate
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppClient.cpp | 39 | ||||
| -rw-r--r-- | src/QXmppDiscoveryManager.h | 2 | ||||
| -rw-r--r-- | src/QXmppOutgoingClient.cpp | 61 | ||||
| -rw-r--r-- | src/QXmppOutgoingClient.h | 2 |
4 files changed, 33 insertions, 71 deletions
diff --git a/src/QXmppClient.cpp b/src/QXmppClient.cpp index 8b420932..6d3b1542 100644 --- a/src/QXmppClient.cpp +++ b/src/QXmppClient.cpp @@ -42,11 +42,13 @@ #include "QXmppVersionManager.h" #include "QXmppEntityTimeManager.h" #include "QXmppDiscoveryManager.h" +#include "QXmppDiscoveryIq.h" +#include "QXmppConstants.h" class QXmppClientPrivate { public: - QXmppClientPrivate(); + QXmppClientPrivate(QXmppClient *); QList<QXmppClientExtension*> extensions; QXmppOutgoingClient* stream; ///< Pointer to QXmppOutgoingClient object a wrapper over @@ -63,13 +65,36 @@ public: QXmppVersionManager *versionManager; ///< Pointer to the version manager QHash<QString,QXmppInvokable*> interfaces; + + QXmppElementList presenceExtensions() const; + + QXmppClient *client; }; -QXmppClientPrivate::QXmppClientPrivate() +QXmppClientPrivate::QXmppClientPrivate(QXmppClient *parentClient) : stream(0), clientPresence(QXmppPresence::Available), - reconnectionManager(0) + reconnectionManager(0), client(parentClient) +{ +} + +QXmppElementList QXmppClientPrivate::presenceExtensions() const { + QXmppDiscoveryManager* ext = client->findExtension<QXmppDiscoveryManager*>(); + if(!ext) + return QXmppElementList(); + + QXmppElementList extensions; + + QXmppElement caps; + caps.setTagName("c"); + caps.setAttribute("xmlns", ns_capabilities); + caps.setAttribute("hash", "sha-1"); + caps.setAttribute("node", QString(capabilities_node)); + caps.setAttribute("ver", ext->capabilities().verificationString().toBase64()); + extensions << caps; + + return extensions; } /// \mainpage @@ -116,10 +141,10 @@ QXmppClientPrivate::QXmppClientPrivate() QXmppClient::QXmppClient(QObject *parent) : QObject(parent), - d(new QXmppClientPrivate) + d(new QXmppClientPrivate(this)) { d->stream = new QXmppOutgoingClient(this); - d->clientPresence.setExtensions(d->stream->presenceExtensions()); + d->clientPresence.setExtensions(d->presenceExtensions()); bool check = connect(d->stream, SIGNAL(elementReceived(const QDomElement&, bool&)), this, SLOT(slotElementReceived(const QDomElement&, bool&))); @@ -253,7 +278,7 @@ void QXmppClient::connectToServer(const QXmppConfiguration& config, } d->clientPresence = initialPresence; - d->clientPresence.setExtensions(d->stream->presenceExtensions()); + d->clientPresence.setExtensions(d->presenceExtensions()); d->stream->connectToHost(); } @@ -442,7 +467,7 @@ void QXmppClient::setClientPresence(const QXmppPresence& presence) else { d->clientPresence = presence; - d->clientPresence.setExtensions(d->stream->presenceExtensions()); + d->clientPresence.setExtensions(d->presenceExtensions()); sendPacket(d->clientPresence); } } diff --git a/src/QXmppDiscoveryManager.h b/src/QXmppDiscoveryManager.h index dd4cdade..2cad8ef1 100644 --- a/src/QXmppDiscoveryManager.h +++ b/src/QXmppDiscoveryManager.h @@ -42,6 +42,7 @@ public: /// \cond
QStringList discoveryFeatures() const;
bool handleStanza(QXmppStream *stream, const QDomElement &element);
+ QXmppDiscoveryIq capabilities();
/// \endcond
signals:
@@ -49,7 +50,6 @@ signals: void itemsReceived(const QXmppDiscoveryIq&);
private:
- QXmppDiscoveryIq capabilities();
};
#endif // QXMPPDISCOVERYMANAGER_H
diff --git a/src/QXmppOutgoingClient.cpp b/src/QXmppOutgoingClient.cpp index 0348d1db..97f97c02 100644 --- a/src/QXmppOutgoingClient.cpp +++ b/src/QXmppOutgoingClient.cpp @@ -808,64 +808,3 @@ void QXmppOutgoingClient::addFeatures(const QStringList &features) { d->extraFeatures << features; } - -// TODO: use the one in discoveryManager -QXmppDiscoveryIq QXmppOutgoingClient::capabilities() const -{ - QXmppDiscoveryIq iq; - iq.setType(QXmppIq::Result); - iq.setQueryType(QXmppDiscoveryIq::InfoQuery); - - // features - QStringList features; - features - << ns_rpc // XEP-0009: Jabber-RPC - << ns_disco_info // XEP-0030: Service Discovery - << ns_ibb // XEP-0047: In-Band Bytestreams - << ns_vcard // XEP-0054: vcard-temp - << ns_bytestreams // XEP-0065: SOCKS5 Bytestreams - << ns_chat_states // XEP-0085: Chat State Notifications - << ns_stream_initiation // XEP-0095: Stream Initiation - << ns_stream_initiation_file_transfer // XEP-0096: SI File Transfer - << ns_capabilities // XEP-0115 : Entity Capabilities - << ns_jingle // XEP-0166 : Jingle - << ns_jingle_rtp // XEP-0167 : Jingle RTP Sessions - << ns_jingle_rtp_audio - << ns_jingle_ice_udp // XEP-0176 : Jingle ICE-UDP Transport Method - << ns_ping; // XEP-0199: XMPP Ping - features << d->extraFeatures; - iq.setFeatures(features); - - // identities - QList<QXmppDiscoveryIq::Identity> identities; - QXmppDiscoveryIq::Identity identity; - - identity.setCategory("automation"); - identity.setType("rpc"); - identities.append(identity); - - identity.setCategory("client"); - identity.setType("pc"); - identity.setName(QString("%1 %2").arg(qApp->applicationName(), qApp->applicationVersion())); - identities.append(identity); - - iq.setIdentities(identities); - return iq; -} - -QXmppElementList QXmppOutgoingClient::presenceExtensions() const -{ - QXmppElementList extensions; - - QXmppElement caps; - caps.setTagName("c"); - caps.setAttribute("xmlns", ns_capabilities); - caps.setAttribute("hash", "sha-1"); - caps.setAttribute("node", QString(capabilities_node)); - // TODO: refer the capabilities() in discoveryManager - caps.setAttribute("ver", capabilities().verificationString().toBase64()); - extensions << caps; - - return extensions; -} - diff --git a/src/QXmppOutgoingClient.h b/src/QXmppOutgoingClient.h index f8f6e9d2..67634422 100644 --- a/src/QXmppOutgoingClient.h +++ b/src/QXmppOutgoingClient.h @@ -78,7 +78,6 @@ public: QXmppConfiguration& configuration(); void addFeatures(const QStringList &features); - QXmppElementList presenceExtensions() const; signals: void error(QXmppClient::Error); @@ -138,7 +137,6 @@ private slots: void pingTimeout(); private: - QXmppDiscoveryIq capabilities() const; void sendAuthDigestMD5ResponseStep1(const QString& challenge); void sendAuthDigestMD5ResponseStep2(const QString& challenge); void sendNonSASLAuth(bool plaintext); |
