diff options
| author | Melvin Keskin <melvo@olomono.de> | 2022-09-27 22:26:45 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-10-01 19:50:31 +0200 |
| commit | 58646ad17d331f980fa1e03e3831fadea847c2b2 (patch) | |
| tree | e2875611583f24ed9e8b79f23a13982253816b2d /src/base | |
| parent | e1d1b5c7655be6545b6e27687d29c53139949dbd (diff) | |
| download | qxmpp-58646ad17d331f980fa1e03e3831fadea847c2b2.tar.gz | |
JingleIq: Add functions for de-/serializing SDP parameters
Diffstat (limited to 'src/base')
| -rw-r--r-- | src/base/QXmppJingleIq.cpp | 38 |
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> ¶meters) +{ + 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> ¶meters) { + for (const auto ¶meter : 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 ¶meter : d->parameters) { - parameter.toXml(writer); - } + sdpParametersToXml(writer, d->parameters); } else { helperToXmlAddAttribute(writer, QStringLiteral("subtype"), d->subtype); } |
