aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppStreamFeatures.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-08-28 10:10:06 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-08-28 10:10:06 +0000
commitd2c606cb668f8b6716eb4c22910f5422e0ca7935 (patch)
tree04829d258bb4dd823b3c7f9df539f130e91037fa /src/QXmppStreamFeatures.cpp
parent754ab1a32d250f7fd6110546d8baa5e19b68240d (diff)
downloadqxmpp-d2c606cb668f8b6716eb4c22910f5422e0ca7935.tar.gz
parse / serialise stream compression feature
Diffstat (limited to 'src/QXmppStreamFeatures.cpp')
-rw-r--r--src/QXmppStreamFeatures.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/QXmppStreamFeatures.cpp b/src/QXmppStreamFeatures.cpp
index 0b78f0e9..fb36f399 100644
--- a/src/QXmppStreamFeatures.cpp
+++ b/src/QXmppStreamFeatures.cpp
@@ -74,6 +74,16 @@ void QXmppStreamFeatures::setAuthMechanisms(QList<QXmppConfiguration::SASLAuthMe
m_authMechanisms = mechanisms;
}
+QList<QXmppConfiguration::CompressionMethod> QXmppStreamFeatures::compressionMethods() const
+{
+ return m_compressionMethods;
+}
+
+void QXmppStreamFeatures::setCompressionMethods(QList<QXmppConfiguration::CompressionMethod> &methods)
+{
+ m_compressionMethods = methods;
+}
+
QXmppConfiguration::StreamSecurityMode QXmppStreamFeatures::securityMode() const
{
return m_securityMode;
@@ -95,6 +105,19 @@ void QXmppStreamFeatures::parse(const QDomElement &element)
m_bindAvailable = !element.firstChildElement("bind").isNull();
m_sessionAvailable = !element.firstChildElement("session").isNull();
+ // parse advertised compression methods
+ QDomElement compression = element.firstChildElement("compression");
+ if (compression.namespaceURI() == ns_compress)
+ {
+ QDomElement subElement = compression.firstChildElement("method");
+ while(!subElement.isNull())
+ {
+ if (subElement.text() == QLatin1String("zlib"))
+ m_compressionMethods << QXmppConfiguration::ZlibCompression;
+ subElement = subElement.nextSiblingElement("method");
+ }
+ }
+
// parse advertised SASL Authentication mechanisms
QDomElement mechs = element.firstChildElement("mechanisms");
if (mechs.namespaceURI() == ns_sasl)
@@ -144,6 +167,23 @@ void QXmppStreamFeatures::toXml(QXmlStreamWriter *writer) const
writer->writeAttribute("xmlns", ns_session);
writer->writeEndElement();
}
+ if (!m_compressionMethods.isEmpty())
+ {
+ writer->writeStartElement("compression");
+ writer->writeAttribute("xmlns", ns_compress);
+ for (int i = 0; i < m_compressionMethods.size(); i++)
+ {
+ writer->writeStartElement("method");
+ switch (m_compressionMethods[i])
+ {
+ case QXmppConfiguration::ZlibCompression:
+ writer->writeCharacters("zlib");
+ break;
+ }
+ writer->writeEndElement();
+ }
+ writer->writeEndElement();
+ }
if (!m_authMechanisms.isEmpty())
{
writer->writeStartElement("mechanisms");