From 1dda2e3834621a6ecda6295bb19993aff4efbac6 Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Sun, 29 Aug 2010 13:30:20 +0000 Subject: refactor stream features parsing --- src/QXmppStreamFeatures.cpp | 113 ++++++++++++++++++++------------------------ 1 file changed, 52 insertions(+), 61 deletions(-) (limited to 'src/QXmppStreamFeatures.cpp') diff --git a/src/QXmppStreamFeatures.cpp b/src/QXmppStreamFeatures.cpp index a3158ece..cc007840 100644 --- a/src/QXmppStreamFeatures.cpp +++ b/src/QXmppStreamFeatures.cpp @@ -27,41 +27,41 @@ #include "QXmppStreamFeatures.h" QXmppStreamFeatures::QXmppStreamFeatures() - : m_bindAvailable(false), - m_sessionAvailable(false), - m_nonSaslAuthAvailable(false), - m_securityMode(QXmppConfiguration::TLSDisabled) + : m_bindMode(Disabled), + m_sessionMode(Disabled), + m_nonSaslAuthMode(Disabled), + m_tlsMode(Disabled) { } -bool QXmppStreamFeatures::isBindAvailable() const +QXmppStreamFeatures::Mode QXmppStreamFeatures::bindMode() const { - return m_bindAvailable; + return m_bindMode; } -void QXmppStreamFeatures::setBindAvailable(bool available) +void QXmppStreamFeatures::setBindMode(QXmppStreamFeatures::Mode mode) { - m_bindAvailable = available; + m_bindMode = mode; } -bool QXmppStreamFeatures::isSessionAvailable() const +QXmppStreamFeatures::Mode QXmppStreamFeatures::sessionMode() const { - return m_sessionAvailable; + return m_sessionMode; } -void QXmppStreamFeatures::setSessionAvailable(bool available) +void QXmppStreamFeatures::setSessionMode(Mode mode) { - m_sessionAvailable = available; + m_sessionMode = mode; } -bool QXmppStreamFeatures::isNonSaslAuthAvailable() const +QXmppStreamFeatures::Mode QXmppStreamFeatures::nonSaslAuthMode() const { - return m_nonSaslAuthAvailable; + return m_nonSaslAuthMode; } -void QXmppStreamFeatures::setNonSaslAuthAvailable(bool available) +void QXmppStreamFeatures::setNonSaslAuthMode(QXmppStreamFeatures::Mode mode) { - m_nonSaslAuthAvailable = available; + m_nonSaslAuthMode = mode; } QList QXmppStreamFeatures::authMechanisms() const @@ -84,14 +84,14 @@ void QXmppStreamFeatures::setCompressionMethods(QListwriteStartElement(tagName); + writer->writeAttribute("xmlns", tagNs); + if (mode == QXmppStreamFeatures::Required) + writer->writeEmptyElement("required"); + writer->writeEndElement(); } } void QXmppStreamFeatures::toXml(QXmlStreamWriter *writer) const { writer->writeStartElement("stream:features"); - if (m_bindAvailable) - { - writer->writeStartElement("bind"); - writer->writeAttribute("xmlns", ns_bind); - writer->writeEndElement(); - } - if (m_sessionAvailable) - { - writer->writeStartElement("session"); - writer->writeAttribute("xmlns", ns_session); - writer->writeEndElement(); - } + writeFeature(writer, "bind", ns_bind, m_bindMode); + writeFeature(writer, "session", ns_session, m_sessionMode); + writeFeature(writer, "auth", ns_authFeature, m_nonSaslAuthMode); + writeFeature(writer, "starttls", ns_tls, m_tlsMode); + if (!m_compressionMethods.isEmpty()) { writer->writeStartElement("compression"); @@ -207,20 +212,6 @@ void QXmppStreamFeatures::toXml(QXmlStreamWriter *writer) const } writer->writeEndElement(); } - if (m_nonSaslAuthAvailable) - { - writer->writeStartElement("auth"); - writer->writeAttribute("xmlns", ns_authFeature); - writer->writeEndElement(); - } - if (m_securityMode != QXmppConfiguration::TLSDisabled) - { - writer->writeStartElement("starttls"); - writer->writeAttribute("xmlns", ns_tls); - if (m_securityMode == QXmppConfiguration::TLSRequired) - writer->writeEmptyElement("required"); - writer->writeEndElement(); - } writer->writeEndElement(); } -- cgit v1.2.3