diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-09-13 12:08:15 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-09-13 12:08:15 +0000 |
| commit | 8eaf6c3def32f1aa07fe863d5eab69f44672b3a5 (patch) | |
| tree | e6950f5dbceeb0e34ac98f7639a63049f8cf7c44 /src/QXmppOutgoingServer.cpp | |
| parent | 5d6e2cabfb730fa6b537397db342bed8eec15de1 (diff) | |
| download | qxmpp-8eaf6c3def32f1aa07fe863d5eab69f44672b3a5.tar.gz | |
* hide some QXmppServer internals
* improve QXmppServer performance
Diffstat (limited to 'src/QXmppOutgoingServer.cpp')
| -rw-r--r-- | src/QXmppOutgoingServer.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/QXmppOutgoingServer.cpp b/src/QXmppOutgoingServer.cpp index adcbd079..7984fd92 100644 --- a/src/QXmppOutgoingServer.cpp +++ b/src/QXmppOutgoingServer.cpp @@ -36,6 +36,7 @@ class QXmppOutgoingServerPrivate { public: + QList<QByteArray> dataQueue; QString localDomain; QString localStreamKey; QString remoteDomain; @@ -180,7 +181,7 @@ void QXmppOutgoingServer::handleStanza(const QDomElement &stanza) } else if (ns == ns_tls) { - if (stanza.tagName() == "proceed") + if (stanza.tagName() == QLatin1String("proceed")) { debug("Starting encryption"); socket()->startClientEncryption(); @@ -202,10 +203,17 @@ void QXmppOutgoingServer::handleStanza(const QDomElement &stanza) } if (response.command() == QXmppDialback::Result) { - if (response.type() == "valid") + if (response.type() == QLatin1String("valid")) { info(QString("Outgoing server stream to %1 is ready").arg(response.from())); d->ready = true; + + // send queued data + foreach (const QByteArray &data, d->dataQueue) + sendData(data); + d->dataQueue.clear(); + + // emit signal emit connected(); } } @@ -252,6 +260,18 @@ void QXmppOutgoingServer::setVerify(const QString &id, const QString &key) d->verifyKey = key; } +/// Sends or queues data until connected. +/// +/// \param data + +void QXmppOutgoingServer::queueData(const QByteArray &data) +{ + if (isConnected()) + sendData(data); + else + d->dataQueue.append(data); +} + /// Returns the remote server's domain. QString QXmppOutgoingServer::remoteDomain() const |
