void tst_QXmppJingleIq::testCandidate() { const QByteArray xml( "<candidate component=\"1\"" " foundation=\"1\"" " generation=\"0\"" " id=\"el0747fg11\"" " ip=\"10.0.1.1\"" " network=\"1\"" " port=\"8998\"" " priority=\"2130706431\"" " protocol=\"udp\"" " type=\"host\"/>"); QXmppJingleCandidate candidate; parsePacket(candidate, xml); QCOMPARE(candidate.foundation(), QLatin1String("1")); QCOMPARE(candidate.generation(), 0); QCOMPARE(candidate.id(), QLatin1String("el0747fg11")); QCOMPARE(candidate.host(), QHostAddress("10.0.1.1")); QCOMPARE(candidate.network(), 1); QCOMPARE(candidate.port(), quint16(8998)); QCOMPARE(candidate.priority(), 2130706431); QCOMPARE(candidate.protocol(), QLatin1String("udp")); QCOMPARE(candidate.type(), QXmppJingleCandidate::HostType); serializePacket(candidate, xml); };
/// \cond void QXmppJingleIq::Content::parse(const QDomElement &element) { m_creator = element.attribute("creator"); m_disposition = element.attribute("disposition"); m_name = element.attribute("name"); m_senders = element.attribute("senders"); // description QDomElement descriptionElement = element.firstChildElement("description"); m_descriptionType = descriptionElement.namespaceURI(); m_descriptionMedia = descriptionElement.attribute("media"); QDomElement child = descriptionElement.firstChildElement("payload-type"); while (!child.isNull()) { QXmppJinglePayloadType payload; payload.parse(child); m_payloadTypes << payload; child = child.nextSiblingElement("payload-type"); } // transport QDomElement transportElement = element.firstChildElement("transport"); m_transportType = transportElement.namespaceURI(); m_transportUser = transportElement.attribute("ufrag"); m_transportPassword = transportElement.attribute("pwd"); child = transportElement.firstChildElement("candidate"); while (!child.isNull()) { QXmppJingleCandidate candidate; candidate.parse(child); m_transportCandidates << candidate; child = child.nextSiblingElement("candidate"); } }
/// \cond void QXmppJingleIq::Content::parse(const QDomElement &element) { d->creator = element.attribute("creator"); d->disposition = element.attribute("disposition"); d->name = element.attribute("name"); d->senders = element.attribute("senders"); // description QDomElement descriptionElement = element.firstChildElement("description"); d->descriptionType = descriptionElement.namespaceURI(); d->descriptionMedia = descriptionElement.attribute("media"); d->descriptionSsrc = descriptionElement.attribute("ssrc").toULong(); QDomElement child = descriptionElement.firstChildElement("payload-type"); while (!child.isNull()) { QXmppJinglePayloadType payload; payload.parse(child); d->payloadTypes << payload; child = child.nextSiblingElement("payload-type"); } // transport QDomElement transportElement = element.firstChildElement("transport"); d->transportType = transportElement.namespaceURI(); d->transportUser = transportElement.attribute("ufrag"); d->transportPassword = transportElement.attribute("pwd"); child = transportElement.firstChildElement("candidate"); while (!child.isNull()) { QXmppJingleCandidate candidate; candidate.parse(child); d->transportCandidates << candidate; child = child.nextSiblingElement("candidate"); } child = transportElement.firstChildElement("fingerprint"); /// XEP-0320 if (!child.isNull()) { d->transportFingerprint = parseFingerprint(child.text()); d->transportFingerprintHash = child.attribute("hash"); d->transportFingerprintSetup = child.attribute("setup"); } }
static QString candidateToSdp(const QXmppJingleCandidate &candidate) { return QString("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()) ); }