aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppOutgoingServer.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2011-09-13 12:08:15 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2011-09-13 12:08:15 +0000
commit8eaf6c3def32f1aa07fe863d5eab69f44672b3a5 (patch)
treee6950f5dbceeb0e34ac98f7639a63049f8cf7c44 /src/QXmppOutgoingServer.cpp
parent5d6e2cabfb730fa6b537397db342bed8eec15de1 (diff)
downloadqxmpp-8eaf6c3def32f1aa07fe863d5eab69f44672b3a5.tar.gz
* hide some QXmppServer internals
* improve QXmppServer performance
Diffstat (limited to 'src/QXmppOutgoingServer.cpp')
-rw-r--r--src/QXmppOutgoingServer.cpp24
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