diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-28 10:10:06 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-28 10:10:06 +0000 |
| commit | d2c606cb668f8b6716eb4c22910f5422e0ca7935 (patch) | |
| tree | 04829d258bb4dd823b3c7f9df539f130e91037fa /src/QXmppStreamFeatures.cpp | |
| parent | 754ab1a32d250f7fd6110546d8baa5e19b68240d (diff) | |
| download | qxmpp-d2c606cb668f8b6716eb4c22910f5422e0ca7935.tar.gz | |
parse / serialise stream compression feature
Diffstat (limited to 'src/QXmppStreamFeatures.cpp')
| -rw-r--r-- | src/QXmppStreamFeatures.cpp | 40 |
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"); |
