aboutsummaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2022-09-27 22:26:45 +0200
committerLinus Jahn <lnj@kaidan.im>2022-10-01 19:50:31 +0200
commit58646ad17d331f980fa1e03e3831fadea847c2b2 (patch)
treee2875611583f24ed9e8b79f23a13982253816b2d /src/base
parente1d1b5c7655be6545b6e27687d29c53139949dbd (diff)
downloadqxmpp-58646ad17d331f980fa1e03e3831fadea847c2b2.tar.gz
JingleIq: Add functions for de-/serializing SDP parameters
Diffstat (limited to 'src/base')
-rw-r--r--src/base/QXmppJingleIq.cpp38
1 files changed, 23 insertions, 15 deletions
diff --git a/src/base/QXmppJingleIq.cpp b/src/base/QXmppJingleIq.cpp
index 32d9549e..c6ae9ede 100644
--- a/src/base/QXmppJingleIq.cpp
+++ b/src/base/QXmppJingleIq.cpp
@@ -121,6 +121,27 @@ static QString candidateToSdp(const QXmppJingleCandidate &candidate)
return QStringLiteral("candidate:%1 %2 %3 %4 %5 %6 typ %7 generation %8").arg(candidate.foundation(), QString::number(candidate.component()), candidate.protocol(), QString::number(candidate.priority()), candidate.host().toString(), QString::number(candidate.port()), QXmppJingleCandidate::typeToString(candidate.type()), QString::number(candidate.generation()));
}
+// Parses all found SDP parameter elements of parent into parameters.
+static void parseSdpParameters(const QDomElement &parent, QVector<QXmppSdpParameter> &parameters)
+{
+ for (auto childElement = parent.firstChildElement();
+ !childElement.isNull();
+ childElement = childElement.nextSiblingElement()) {
+ if (QXmppSdpParameter::isSdpParameter(childElement)) {
+ QXmppSdpParameter parameter;
+ parameter.parse(childElement);
+ parameters.append(parameter);
+ }
+ }
+}
+
+// Serializes the SDP parameters.
+static void sdpParametersToXml(QXmlStreamWriter *writer, const QVector<QXmppSdpParameter> &parameters) {
+ for (const auto &parameter : parameters) {
+ parameter.toXml(writer);
+ }
+}
+
// Parses all found RTP Feedback Negotiation elements inside of parent into properties and
// intervals.
static void parseJingleRtpFeedbackNegotiationElements(const QDomElement &parent, QVector<QXmppJingleRtpFeedbackProperty> &properties, QVector<QXmppJingleRtpFeedbackInterval> &intervals)
@@ -2043,18 +2064,7 @@ void QXmppJingleRtpFeedbackProperty::parse(const QDomElement &element)
{
d->type = element.attribute(QStringLiteral("type"));
d->subtype = element.attribute(QStringLiteral("subtype"));
-
- QVector<QXmppSdpParameter> parameters;
- for (auto childElement = element.firstChildElement();
- !childElement.isNull();
- childElement = childElement.nextSiblingElement()) {
- if (QXmppSdpParameter::isSdpParameter(childElement)) {
- QXmppSdpParameter parameter;
- parameter.parse(childElement);
- parameters.append(parameter);
- }
- }
- d->parameters = parameters;
+ parseSdpParameters(element, d->parameters);
}
void QXmppJingleRtpFeedbackProperty::toXml(QXmlStreamWriter *writer) const
@@ -2065,9 +2075,7 @@ void QXmppJingleRtpFeedbackProperty::toXml(QXmlStreamWriter *writer) const
// If there are parameters, they must be used instead of the subtype.
if (d->subtype.isEmpty()) {
- for (const auto &parameter : d->parameters) {
- parameter.toXml(writer);
- }
+ sdpParametersToXml(writer, d->parameters);
} else {
helperToXmlAddAttribute(writer, QStringLiteral("subtype"), d->subtype);
}