10#include "QXmppConstants_p.h"
15#include <QHostAddress>
17class QXmppJingleCandidatePrivate;
18class QXmppJingleDescriptionPrivate;
19class QXmppJingleIqContentPrivate;
20class QXmppJingleIqReasonPrivate;
21class QXmppJingleIqPrivate;
22class QXmppJinglePayloadTypePrivate;
23class QXmppJingleRtpCryptoElementPrivate;
24class QXmppJingleRtpEncryptionPrivate;
25class QXmppJingleRtpFeedbackPropertyPrivate;
26class QXmppJingleRtpHeaderExtensionPropertyPrivate;
27class QXmppSdpParameterPrivate;
28class QXmppJingleMessageInitiationElementPrivate;
29class QXmppCallInviteElementPrivate;
39 void setName(
const QString &name);
41 QString value()
const;
42 void setValue(
const QString &value);
45 void parse(
const QDomElement &element);
46 void toXml(QXmlStreamWriter *writer)
const;
49 static bool isSdpParameter(
const QDomElement &element);
52 QSharedDataPointer<QXmppSdpParameterPrivate> d;
63 void setTag(uint32_t tag);
65 QString cryptoSuite()
const;
66 void setCryptoSuite(
const QString &cryptoSuite);
68 QString keyParams()
const;
69 void setKeyParams(
const QString &keyParams);
71 QString sessionParams()
const;
72 void setSessionParams(
const QString &sessionParams);
75 static constexpr std::tuple XmlTag = { u
"crypto", QXmpp::Private::ns_jingle_rtp };
76 void parse(
const QDomElement &element);
77 void toXml(QXmlStreamWriter *writer)
const;
80 static bool isJingleRtpCryptoElement(
const QDomElement &element);
83 QSharedDataPointer<QXmppJingleRtpCryptoElementPrivate> d;
93 bool isRequired()
const;
94 void setRequired(
bool isRequired);
96 QVector<QXmppJingleRtpCryptoElement> cryptoElements()
const;
97 void setCryptoElements(
const QVector<QXmppJingleRtpCryptoElement> &cryptoElements);
100 static constexpr std::tuple XmlTag = { u
"encryption", QXmpp::Private::ns_jingle_rtp };
101 void parse(
const QDomElement &element);
102 void toXml(QXmlStreamWriter *writer)
const;
105 static bool isJingleRtpEncryption(
const QDomElement &element);
108 QSharedDataPointer<QXmppJingleRtpEncryptionPrivate> d;
118 QString type()
const;
119 void setType(
const QString &type);
121 QString subtype()
const;
122 void setSubtype(
const QString &subtype);
124 QVector<QXmppSdpParameter> parameters()
const;
125 void setParameters(
const QVector<QXmppSdpParameter> ¶meters);
128 static constexpr std::tuple XmlTag = { u
"rtcp-fb", QXmpp::Private::ns_jingle_rtcp_fb };
129 void parse(
const QDomElement &element);
130 void toXml(QXmlStreamWriter *writer)
const;
133 static bool isJingleRtpFeedbackProperty(
const QDomElement &element);
136 QSharedDataPointer<QXmppJingleRtpFeedbackPropertyPrivate> d;
146 uint64_t value()
const;
147 void setValue(uint64_t value);
150 static constexpr std::tuple XmlTag = { u
"rtcp-fb-trr-int", QXmpp::Private::ns_jingle_rtcp_fb };
151 void parse(
const QDomElement &element);
152 void toXml(QXmlStreamWriter *writer)
const;
155 static bool isJingleRtpFeedbackInterval(
const QDomElement &element);
178 void setId(uint32_t
id);
181 void setUri(
const QString &uri);
183 Senders senders()
const;
184 void setSenders(Senders senders);
186 QVector<QXmppSdpParameter> parameters()
const;
187 void setParameters(
const QVector<QXmppSdpParameter> ¶meters);
190 static constexpr std::tuple XmlTag = { u
"rtp-hdrext", QXmpp::Private::ns_jingle_rtp_hdrext };
191 void parse(
const QDomElement &element);
192 void toXml(QXmlStreamWriter *writer)
const;
195 static bool isJingleRtpHeaderExtensionProperty(
const QDomElement &element);
198 QSharedDataPointer<QXmppJingleRtpHeaderExtensionPropertyPrivate> d;
212 unsigned char channels()
const;
213 void setChannels(
unsigned char channels);
215 unsigned int clockrate()
const;
216 void setClockrate(
unsigned int clockrate);
218 unsigned char id()
const;
219 void setId(
unsigned char id);
221 unsigned int maxptime()
const;
222 void setMaxptime(
unsigned int maxptime);
224 QString name()
const;
225 void setName(
const QString &name);
227 QMap<QString, QString> parameters()
const;
228 void setParameters(
const QMap<QString, QString> ¶meters);
230 unsigned int ptime()
const;
231 void setPtime(
unsigned int ptime);
233 QVector<QXmppJingleRtpFeedbackProperty> rtpFeedbackProperties()
const;
234 void setRtpFeedbackProperties(
const QVector<QXmppJingleRtpFeedbackProperty> &rtpFeedbackProperties);
236 QVector<QXmppJingleRtpFeedbackInterval> rtpFeedbackIntervals()
const;
237 void setRtpFeedbackIntervals(
const QVector<QXmppJingleRtpFeedbackInterval> &rtpFeedbackIntervals);
240 static constexpr std::tuple XmlTag = { u
"payload-type", QXmpp::Private::ns_jingle_rtp };
241 void parse(
const QDomElement &element);
242 void toXml(QXmlStreamWriter *writer)
const;
249 QSharedDataPointer<QXmppJinglePayloadTypePrivate> d;
258 QString media()
const;
259 void setMedia(
const QString &media);
261 quint32 ssrc()
const;
262 void setSsrc(quint32 ssrc);
264 QString type()
const;
265 void setType(
const QString &type);
268 const QList<QXmppJinglePayloadType> &payloadTypes()
const;
269 void setPayloadTypes(
const QList<QXmppJinglePayloadType> &payloadTypes);
272 static constexpr std::tuple XmlTag = { u
"description", QXmpp::Private::ns_jingle_rtp };
273 void parse(
const QDomElement &element);
274 void toXml(QXmlStreamWriter *writer)
const;
278 QSharedDataPointer<QXmppJingleDescriptionPrivate> d;
307 int component()
const;
308 void setComponent(
int component);
310 QString foundation()
const;
311 void setFoundation(
const QString &foundation);
313 int generation()
const;
314 void setGeneration(
int generation);
316 QHostAddress host()
const;
317 void setHost(
const QHostAddress &host);
320 void setId(
const QString &
id);
323 void setNetwork(
int network);
325 quint16 port()
const;
326 void setPort(quint16 port);
328 int priority()
const;
329 void setPriority(
int priority);
331 QString protocol()
const;
332 void setProtocol(
const QString &protocol);
340 static constexpr std::tuple XmlTag = { u
"candidate", QXmpp::Private::ns_jingle_ice_udp };
341 void parse(
const QDomElement &element);
342 void toXml(QXmlStreamWriter *writer)
const;
346 QSharedDataPointer<QXmppJingleCandidatePrivate> d;
365 IncompatibleParameters,
370 UnsupportedApplications,
371 UnsupportedTransports
389 QString text()
const;
390 void setText(
const QString &text);
393 void setType(Type type);
395 RtpErrorCondition rtpErrorCondition()
const;
396 void setRtpErrorCondition(RtpErrorCondition rtpErrorCondition);
399 static constexpr std::tuple XmlTag = { u
"reason", QXmpp::Private::ns_jingle };
400 void parse(
const QDomElement &element);
401 void toXml(QXmlStreamWriter *writer)
const;
405 QSharedDataPointer<QXmppJingleIqReasonPrivate> d;
457 using RtpSessionState = std::variant<RtpSessionStateActive, RtpSessionStateHold, RtpSessionStateUnhold, RtpSessionStateMuting, RtpSessionStateRinging>;
467 class QXMPP_EXPORT Content
471 Content(
const QXmppJingleIq::Content &other);
472 Content(QXmppJingleIq::Content &&);
475 Content &operator=(
const Content &other);
476 Content &operator=(Content &&);
478 QString creator()
const;
479 void setCreator(
const QString &creator);
481 QString name()
const;
482 void setName(
const QString &name);
484 QString senders()
const;
485 void setSenders(
const QString &senders);
491#if QXMPP_DEPRECATED_SINCE(1, 6)
492 QString descriptionMedia()
const;
493 void setDescriptionMedia(
const QString &media);
495 quint32 descriptionSsrc()
const;
496 void setDescriptionSsrc(quint32 ssrc);
499 QList<QXmppJinglePayloadType> payloadTypes()
const;
500 void setPayloadTypes(
const QList<QXmppJinglePayloadType> &payloadTypes);
503 bool isRtpMultiplexingSupported()
const;
504 void setRtpMultiplexingSupported(
bool isRtpMultiplexingSupported);
506 std::optional<QXmppJingleRtpEncryption> rtpEncryption()
const;
507 void setRtpEncryption(
const std::optional<QXmppJingleRtpEncryption> &rtpEncryption);
510 QList<QXmppJingleCandidate> transportCandidates()
const;
511 void setTransportCandidates(
const QList<QXmppJingleCandidate> &candidates);
513 QString transportUser()
const;
514 void setTransportUser(
const QString &user);
516 QString transportPassword()
const;
517 void setTransportPassword(
const QString &password);
519 QVector<QXmppJingleRtpFeedbackProperty> rtpFeedbackProperties()
const;
520 void setRtpFeedbackProperties(
const QVector<QXmppJingleRtpFeedbackProperty> &rtpFeedbackProperties);
522 QVector<QXmppJingleRtpFeedbackInterval> rtpFeedbackIntervals()
const;
523 void setRtpFeedbackIntervals(
const QVector<QXmppJingleRtpFeedbackInterval> &rtpFeedbackIntervals);
525 QVector<QXmppJingleRtpHeaderExtensionProperty> rtpHeaderExtensionProperties()
const;
526 void setRtpHeaderExtensionProperties(
const QVector<QXmppJingleRtpHeaderExtensionProperty> &rtpHeaderExtensionProperties);
528 bool isRtpHeaderExtensionMixingAllowed()
const;
529 void setRtpHeaderExtensionMixingAllowed(
bool isRtpHeaderExtensionMixingAllowed);
532 QByteArray transportFingerprint()
const;
533 void setTransportFingerprint(
const QByteArray &fingerprint);
535 QString transportFingerprintHash()
const;
536 void setTransportFingerprintHash(
const QString &hash);
538 QString transportFingerprintSetup()
const;
539 void setTransportFingerprintSetup(
const QString &setup);
542 static constexpr std::tuple XmlTag = { u
"content", QXmpp::Private::ns_jingle };
543 void parse(
const QDomElement &element);
544 void toXml(QXmlStreamWriter *writer)
const;
546 bool parseSdp(
const QString &sdp);
547 QString toSdp()
const;
551 QSharedDataPointer<QXmppJingleIqContentPrivate> d;
563 void setAction(
Action action);
565 void addContent(
const Content &content);
566 QList<Content> contents()
const;
567 void setContents(
const QList<Content> &contents);
569 QString initiator()
const;
570 void setInitiator(
const QString &initiator);
572 std::optional<QXmppJingleReason> actionReason()
const;
573 void setActionReason(
const std::optional<QXmppJingleReason> &);
575#if QXMPP_DEPRECATED_SINCE(1, 11)
576 [[deprecated(
"Use actionReason() instead.")]]
578 [[deprecated(
"Use actionReason() instead.")]]
582 QString responder()
const;
583 void setResponder(
const QString &responder);
585#if QXMPP_DEPRECATED_SINCE(1, 5)
586 QT_DEPRECATED_X(
"Use QXmpp::rtpSessionState() instead")
587 bool ringing() const;
588 QT_DEPRECATED_X("Use
QXmpp::setRtpSessionState() instead")
589 void setRinging(
bool ringing);
593 void setSid(
const QString &sid);
595 QString mujiGroupChatJid()
const;
596 void setMujiGroupChatJid(
const QString &mujiGroupChatJid);
598 std::optional<RtpSessionState> rtpSessionState()
const;
599 void setRtpSessionState(
const std::optional<RtpSessionState> &rtpSessionState);
602 static bool isJingleIq(
const QDomElement &element);
607 void parseElementFromChild(
const QDomElement &element)
override;
608 void toXmlElementFromChild(QXmlStreamWriter *writer)
const override;
612 QSharedDataPointer<QXmppJingleIqPrivate> d;
632 void setType(Type type);
635 void setId(
const QString &
id);
637 std::optional<QXmppJingleDescription> description()
const;
638 void setDescription(std::optional<QXmppJingleDescription> description);
640 std::optional<QXmppJingleReason> reason()
const;
641 void setReason(std::optional<QXmppJingleReason> reason);
643 bool containsTieBreak()
const;
644 void setContainsTieBreak(
bool containsTieBreak);
646 QString migratedTo()
const;
647 void setMigratedTo(
const QString &migratedTo);
650 void parse(
const QDomElement &element);
651 void toXml(QXmlStreamWriter *writer)
const;
654 static bool isJingleMessageInitiationElement(
const QDomElement &);
657 QSharedDataPointer<QXmppJingleMessageInitiationElementPrivate> d;
674 std::optional<QString> jid;
676 bool operator==(
const Jingle &other)
const {
return other.sid == sid && other.jid == jid; }
678 void parse(
const QDomElement &element);
679 void toXml(QXmlStreamWriter *writer)
const;
685 bool operator==(
const External &other)
const {
return other.uri == uri; }
687 static constexpr std::tuple XmlTag = { u
"external", QXmpp::Private::ns_call_invites };
688 void parse(
const QDomElement &el);
689 void toXml(QXmlStreamWriter *writer)
const;
696 void setType(Type type);
699 void setId(
const QString &
id);
702 void setAudio(
bool audio);
705 void setVideo(
bool video);
707 std::optional<Jingle> jingle()
const;
708 void setJingle(std::optional<Jingle> jingle);
710 std::optional<QVector<External>> external()
const;
711 void setExternal(std::optional<QVector<External>> external);
714 void parse(
const QDomElement &element);
715 void toXml(QXmlStreamWriter *writer)
const;
718 static bool isCallInviteElement(
const QDomElement &);
721 QSharedDataPointer<QXmppCallInviteElementPrivate> d;
The QXmppCallInviteElement class represents a Call Invite element as specified by XEP-0482: Call Invi...
Definition QXmppJingleData.h:661
Type
Definition QXmppJingleData.h:663
The QXmppIq class is the base class for all IQs.
Definition QXmppIq.h:23
The QXmppJingleCandidate class represents a transport candidate as specified by XEP-0176: Jingle ICE-...
Definition QXmppJingleData.h:286
QXmppJingleCandidate(QXmppJingleCandidate &&)
Move-constructor.
QXmppJingleCandidate & operator=(const QXmppJingleCandidate &other)
Assignment operator.
QXmppJingleCandidate & operator=(QXmppJingleCandidate &&)
Move-assignment operator.
QXmppJingleCandidate(const QXmppJingleCandidate &other)
Copy-constructor.
Type
This enum is used to describe a candidate's type.
Definition QXmppJingleData.h:289
@ HostType
Host candidate, a local address/port.
Definition QXmppJingleData.h:290
The QXmppJingleDescription class represents descriptions for Jingle elements including media type,...
Definition QXmppJingleData.h:253
The QXmppJingleIq class represents an IQ used for initiating media sessions as specified by XEP-0166:...
Definition QXmppJingleData.h:415
QXmppJingleIq & operator=(const QXmppJingleIq &other)
Assignment operator.
QXmppJingleIq & operator=(QXmppJingleIq &&)
Move-assignment operator.
QXmppJingleIq(QXmppJingleIq &&)
Move-constructor.
Action
This enum is used to describe a Jingle action.
Definition QXmppJingleData.h:418
Creator
Definition QXmppJingleData.h:436
@ Initiator
The initiator generated the content type.
Definition QXmppJingleData.h:438
QXmppJingleIq(const QXmppJingleIq &other)
Copy-constructor.
std::variant< RtpSessionStateActive, RtpSessionStateHold, RtpSessionStateUnhold, RtpSessionStateMuting, RtpSessionStateRinging > RtpSessionState
Definition QXmppJingleData.h:457
The QXmppJingleMessageInitiationElement class represents a Jingle Message Initiation element as speci...
Definition QXmppJingleData.h:616
Type
Definition QXmppJingleData.h:618
The QXmppJinglePayloadType class represents a payload type as specified by XEP-0167: Jingle RTP Sessi...
Definition QXmppJingleData.h:206
Definition QXmppJingleData.h:350
Type
This enum is used to describe a reason's type.
Definition QXmppJingleData.h:353
RtpErrorCondition
Definition QXmppJingleData.h:376
@ InvalidCrypto
The encryption offer is rejected.
Definition QXmppJingleData.h:380
@ NoErrorCondition
There is no error condition.
Definition QXmppJingleData.h:378
The QXmppJingleRtpCryptoElement class represents the XEP-0167: Jingle RTP Sessions "crypto" element u...
Definition QXmppJingleData.h:56
The QXmppJingleRtpEncryption class represents the XEP-0167: Jingle RTP Sessions "encryption" element ...
Definition QXmppJingleData.h:87
The QXmppJingleRtpFeedbackInterval class represents the XEP-0293: Jingle RTP Feedback Negotiation "rt...
Definition QXmppJingleData.h:140
The QXmppJingleRtpFeedbackProperty class represents the XEP-0293: Jingle RTP Feedback Negotiation "rt...
Definition QXmppJingleData.h:112
The QXmppSdpParameter class represents a Session Description Protocol (SDP) parameter specified by RF...
Definition QXmppJingleData.h:32
Definition Algorithms.h:14
Definition QXmppJingleData.h:443
Definition QXmppJingleData.h:444
Definition QXmppJingleData.h:446
QString name
Session to be muted (e.g., only audio or video)
Definition QXmppJingleData.h:453
bool isMute
Definition QXmppJingleData.h:449
Creator creator
Creator of the corresponding session.
Definition QXmppJingleData.h:451
Definition QXmppJingleData.h:455
Definition QXmppJingleData.h:445