aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2011-01-17 13:40:46 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2011-01-17 13:40:46 +0000
commit1c30859573de9ffee8df206b6f3c64323cf4446b (patch)
treee2843858fe0ad8b52e716361ec6739144ec9f7df /src
parent145a79519c760c2aa9eff15618c17c24ac3e25f0 (diff)
downloadqxmpp-1c30859573de9ffee8df206b6f3c64323cf4446b.tar.gz
cleanup jingle candidate type parsing/serialisation
Diffstat (limited to 'src')
-rw-r--r--src/QXmppJingleIq.cpp55
-rw-r--r--src/QXmppJingleIq.h3
2 files changed, 39 insertions, 19 deletions
diff --git a/src/QXmppJingleIq.cpp b/src/QXmppJingleIq.cpp
index 4538c748..a27658a0 100644
--- a/src/QXmppJingleIq.cpp
+++ b/src/QXmppJingleIq.cpp
@@ -604,17 +604,7 @@ void QXmppJingleCandidate::parse(const QDomElement &element)
m_port = element.attribute("port").toInt();
m_priority = element.attribute("priority").toInt();
m_protocol = element.attribute("protocol");
- const QString type = element.attribute("type");
- if (type == "host")
- m_type = HostType;
- else if (type == "prflx")
- m_type = PeerReflexiveType;
- else if (type == "srflx")
- m_type = ServerReflexiveType;
- else if (type == "relay")
- m_type = RelayedType;
- else
- qWarning() << "Unknown candidate type" << type;
+ m_type = typeFromString(element.attribute("type"));
}
void QXmppJingleCandidate::toXml(QXmlStreamWriter *writer) const
@@ -629,24 +619,51 @@ void QXmppJingleCandidate::toXml(QXmlStreamWriter *writer) const
helperToXmlAddAttribute(writer, "port", QString::number(m_port));
helperToXmlAddAttribute(writer, "priority", QString::number(m_priority));
helperToXmlAddAttribute(writer, "protocol", m_protocol);
- QString type;
- switch (m_type)
+ helperToXmlAddAttribute(writer, "type", typeToString(m_type));
+ writer->writeEndElement();
+}
+
+QXmppJingleCandidate::Type QXmppJingleCandidate::typeFromString(const QString &typeStr, bool *ok)
+{
+ QXmppJingleCandidate::Type type;
+ if (typeStr == "host")
+ type = HostType;
+ else if (typeStr == "prflx")
+ type = PeerReflexiveType;
+ else if (typeStr == "srflx")
+ type = ServerReflexiveType;
+ else if (typeStr == "relay")
+ type = RelayedType;
+ else {
+ qWarning() << "Unknown candidate type" << typeStr;
+ if (ok)
+ *ok = false;
+ return HostType;
+ }
+ if (ok)
+ *ok = true;
+ return type;
+}
+
+QString QXmppJingleCandidate::typeToString(QXmppJingleCandidate::Type type)
+{
+ QString typeStr;
+ switch (type)
{
case HostType:
- type = "host";
+ typeStr = "host";
break;
case PeerReflexiveType:
- type = "prflx";
+ typeStr = "prflx";
break;
case ServerReflexiveType:
- type = "srflx";
+ typeStr = "srflx";
break;
case RelayedType:
- type = "relay";
+ typeStr = "relay";
break;
}
- helperToXmlAddAttribute(writer, "type", type);
- writer->writeEndElement();
+ return typeStr;
}
QXmppJinglePayloadType::QXmppJinglePayloadType()
diff --git a/src/QXmppJingleIq.h b/src/QXmppJingleIq.h
index cce0d8e4..490d1c5c 100644
--- a/src/QXmppJingleIq.h
+++ b/src/QXmppJingleIq.h
@@ -121,6 +121,9 @@ public:
bool isNull() const;
+ static QXmppJingleCandidate::Type typeFromString(const QString &typeStr, bool *ok = 0);
+ static QString typeToString(QXmppJingleCandidate::Type type);
+
/// \cond
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;