14#include <QHostAddress>
16class QXmppJingleCandidatePrivate;
17class QXmppJingleDescriptionPrivate;
18class QXmppJingleIqContentPrivate;
19class QXmppJingleIqReasonPrivate;
20class QXmppJingleIqPrivate;
21class QXmppJinglePayloadTypePrivate;
22class QXmppJingleRtpCryptoElementPrivate;
23class QXmppJingleRtpEncryptionPrivate;
24class QXmppJingleRtpFeedbackPropertyPrivate;
25class QXmppJingleRtpHeaderExtensionPropertyPrivate;
26class QXmppSdpParameterPrivate;
27class QXmppJingleMessageInitiationElementPrivate;
28class QXmppCallInviteElementPrivate;
40 QString
value()
const;
44 void parse(
const QDomElement &element);
45 void toXml(QXmlStreamWriter *writer)
const;
51 QSharedDataPointer<QXmppSdpParameterPrivate> d;
74 void parse(
const QDomElement &element);
75 void toXml(QXmlStreamWriter *writer)
const;
81 QSharedDataPointer<QXmppJingleRtpCryptoElementPrivate> d;
98 void parse(
const QDomElement &element);
99 void toXml(QXmlStreamWriter *writer)
const;
105 QSharedDataPointer<QXmppJingleRtpEncryptionPrivate> d;
115 QString
type()
const;
121 QVector<QXmppSdpParameter>
parameters()
const;
125 void parse(
const QDomElement &element);
126 void toXml(QXmlStreamWriter *writer)
const;
132 QSharedDataPointer<QXmppJingleRtpFeedbackPropertyPrivate> d;
142 uint64_t
value()
const;
146 void parse(
const QDomElement &element);
147 void toXml(QXmlStreamWriter *writer)
const;
173 void setId(uint32_t
id);
176 void setUri(
const QString &uri);
178 Senders senders()
const;
179 void setSenders(Senders senders);
181 QVector<QXmppSdpParameter> parameters()
const;
182 void setParameters(
const QVector<QXmppSdpParameter> ¶meters);
185 void parse(
const QDomElement &element);
186 void toXml(QXmlStreamWriter *writer)
const;
189 static bool isJingleRtpHeaderExtensionProperty(
const QDomElement &element);
192 QSharedDataPointer<QXmppJingleRtpHeaderExtensionPropertyPrivate> d;
199class QXMPP_EXPORT QXmppJinglePayloadType
202 QXmppJinglePayloadType();
203 QXmppJinglePayloadType(
const QXmppJinglePayloadType &other);
204 ~QXmppJinglePayloadType();
212 unsigned char id()
const;
213 void setId(
unsigned char id);
218 QString
name()
const;
224 unsigned int ptime()
const;
234 void parse(
const QDomElement &element);
235 void toXml(QXmlStreamWriter *writer)
const;
238 QXmppJinglePayloadType &
operator=(
const QXmppJinglePayloadType &other);
239 bool operator==(
const QXmppJinglePayloadType &other)
const;
242 QSharedDataPointer<QXmppJinglePayloadTypePrivate> d;
245class QXMPP_EXPORT QXmppJingleDescription
248 QXmppJingleDescription();
249 QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleDescription)
251 QString
media()
const;
254 quint32
ssrc()
const;
257 QString
type()
const;
261 const QList<QXmppJinglePayloadType> &
payloadTypes()
const;
265 void parse(
const QDomElement &element);
266 void toXml(QXmlStreamWriter *writer)
const;
270 QSharedDataPointer<QXmppJingleDescriptionPrivate> d;
308 QHostAddress
host()
const;
312 void setId(
const QString &
id);
317 quint16
port()
const;
332 void parse(
const QDomElement &element);
333 void toXml(QXmlStreamWriter *writer)
const;
340 QSharedDataPointer<QXmppJingleCandidatePrivate> d;
343class QXMPP_EXPORT QXmppJingleReason
359 IncompatibleParameters,
364 UnsupportedApplications,
365 UnsupportedTransports
381 QString text()
const;
382 void setText(
const QString &text);
385 void setType(Type type);
387 RtpErrorCondition rtpErrorCondition()
const;
388 void setRtpErrorCondition(RtpErrorCondition rtpErrorCondition);
391 void parse(
const QDomElement &element);
392 void toXml(QXmlStreamWriter *writer)
const;
399 QSharedDataPointer<QXmppJingleIqReasonPrivate> d;
451 using RtpSessionState = std::variant<RtpSessionStateActive, RtpSessionStateHold, RtpSessionStateUnhold, RtpSessionStateMuting, RtpSessionStateRinging>;
461 class QXMPP_EXPORT Content
465 Content(
const QXmppJingleIq::Content &other);
466 Content(QXmppJingleIq::Content &&);
469 Content &
operator=(
const Content &other);
472 QString creator()
const;
473 void setCreator(
const QString &creator);
475 QString name()
const;
476 void setName(
const QString &name);
478 QString senders()
const;
479 void setSenders(
const QString &senders);
485#if QXMPP_DEPRECATED_SINCE(1, 6)
486 QString descriptionMedia()
const;
487 void setDescriptionMedia(
const QString &media);
489 quint32 descriptionSsrc()
const;
490 void setDescriptionSsrc(quint32 ssrc);
493 QList<QXmppJinglePayloadType> payloadTypes()
const;
494 void setPayloadTypes(
const QList<QXmppJinglePayloadType> &payloadTypes);
497 bool isRtpMultiplexingSupported()
const;
498 void setRtpMultiplexingSupported(
bool isRtpMultiplexingSupported);
500 std::optional<QXmppJingleRtpEncryption> rtpEncryption()
const;
501 void setRtpEncryption(
const std::optional<QXmppJingleRtpEncryption> &rtpEncryption);
504 QList<QXmppJingleCandidate> transportCandidates()
const;
505 void setTransportCandidates(
const QList<QXmppJingleCandidate> &candidates);
507 QString transportUser()
const;
508 void setTransportUser(
const QString &user);
510 QString transportPassword()
const;
511 void setTransportPassword(
const QString &password);
513 QVector<QXmppJingleRtpFeedbackProperty> rtpFeedbackProperties()
const;
514 void setRtpFeedbackProperties(
const QVector<QXmppJingleRtpFeedbackProperty> &rtpFeedbackProperties);
516 QVector<QXmppJingleRtpFeedbackInterval> rtpFeedbackIntervals()
const;
517 void setRtpFeedbackIntervals(
const QVector<QXmppJingleRtpFeedbackInterval> &rtpFeedbackIntervals);
519 QVector<QXmppJingleRtpHeaderExtensionProperty> rtpHeaderExtensionProperties()
const;
520 void setRtpHeaderExtensionProperties(
const QVector<QXmppJingleRtpHeaderExtensionProperty> &rtpHeaderExtensionProperties);
522 bool isRtpHeaderExtensionMixingAllowed()
const;
523 void setRtpHeaderExtensionMixingAllowed(
bool isRtpHeaderExtensionMixingAllowed);
526 QByteArray transportFingerprint()
const;
527 void setTransportFingerprint(
const QByteArray &fingerprint);
529 QString transportFingerprintHash()
const;
530 void setTransportFingerprintHash(
const QString &hash);
532 QString transportFingerprintSetup()
const;
533 void setTransportFingerprintSetup(
const QString &setup);
536 void parse(
const QDomElement &element);
537 void toXml(QXmlStreamWriter *writer)
const;
539 bool parseSdp(
const QString &sdp);
540 QString toSdp()
const;
544 QSharedDataPointer<QXmppJingleIqContentPrivate> d;
571#if QXMPP_DEPRECATED_SINCE(1, 5)
572 QT_DEPRECATED_X(
"Use QXmpp::rtpSessionState() instead")
574 QT_DEPRECATED_X(
"Use QXmpp::setRtpSessionState() instead")
588 static bool isJingleIq(
const QDomElement &element);
593 void parseElementFromChild(
const QDomElement &element)
override;
594 void toXmlElementFromChild(QXmlStreamWriter *writer)
const override;
598 QSharedDataPointer<QXmppJingleIqPrivate> d;
618 void setType(Type type);
621 void setId(
const QString &
id);
623 std::optional<QXmppJingleDescription> description()
const;
624 void setDescription(std::optional<QXmppJingleDescription> description);
626 std::optional<QXmppJingleReason> reason()
const;
627 void setReason(std::optional<QXmppJingleReason> reason);
629 bool containsTieBreak()
const;
630 void setContainsTieBreak(
bool containsTieBreak);
632 QString migratedTo()
const;
633 void setMigratedTo(
const QString &migratedTo);
636 void parse(
const QDomElement &element);
637 void toXml(QXmlStreamWriter *writer)
const;
640 static bool isJingleMessageInitiationElement(
const QDomElement &);
641 static QString jmiElementTypeToString(Type type);
642 static std::optional<Type> stringToJmiElementType(
const QString &typeStr);
645 QSharedDataPointer<QXmppJingleMessageInitiationElementPrivate> d;
662 std::optional<QString> jid;
664 bool operator==(
const Jingle &other)
const {
return other.sid == sid && other.jid == jid; }
666 void parse(
const QDomElement &element);
667 void toXml(QXmlStreamWriter *writer)
const;
673 bool operator==(
const External &other)
const {
return other.uri == uri; }
675 void toXml(QXmlStreamWriter *writer)
const;
678 QXmppCallInviteElement();
679 QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppCallInviteElement)
682 void setType(Type type);
685 void setId(
const QString &
id);
688 void setAudio(
bool audio);
691 void setVideo(
bool video);
693 std::optional<Jingle> jingle()
const;
694 void setJingle(std::optional<Jingle> jingle);
696 std::optional<QVector<External>> external()
const;
697 void setExternal(std::optional<QVector<External>> external);
700 void parse(
const QDomElement &element);
701 void toXml(QXmlStreamWriter *writer)
const;
704 static bool isCallInviteElement(
const QDomElement &);
707 static QString callInviteElementTypeToString(Type type);
708 static std::optional<Type> stringToCallInviteElementType(
const QString &typeStr);
710 QSharedDataPointer<QXmppCallInviteElementPrivate> d;
Type
Definition QXmppJingleData.h:651
QXmppCallInviteElement()
Constructs a Call Invite element.
Definition QXmppJingleData.cpp:3145
QXmppIq(QXmppIq::Type type=QXmppIq::Get)
Definition QXmppIq.cpp:34
The QXmppJingleCandidate class represents a transport candidate as specified by XEP-0176: Jingle ICE-...
Definition QXmppJingleData.h:278
void setFoundation(const QString &foundation)
Definition QXmppJingleData.cpp:1551
int network() const
Returns the network index (starting at 0) the candidate is on.
Definition QXmppJingleData.cpp:1605
QXmppJingleCandidate(QXmppJingleCandidate &&)
Move-constructor.
void setId(const QString &id)
Sets the candidate's unique identifier.
Definition QXmppJingleData.cpp:1599
int generation() const
Definition QXmppJingleData.cpp:1561
QXmppJingleCandidate::Type type() const
Returns the candidate type (e.g. "host").
Definition QXmppJingleData.cpp:1653
int priority() const
Returns the candidate's priority.
Definition QXmppJingleData.cpp:1629
QXmppJingleCandidate & operator=(const QXmppJingleCandidate &other)
Assignment operator.
QXmppJingleCandidate & operator=(QXmppJingleCandidate &&)
Move-assignment operator.
void setPort(quint16 port)
Sets the candidate's port number.
Definition QXmppJingleData.cpp:1623
QXmppJingleCandidate(const QXmppJingleCandidate &other)
Copy-constructor.
void setProtocol(const QString &protocol)
Sets the candidate's protocol (e.g. "udp").
Definition QXmppJingleData.cpp:1647
bool isNull() const
Returns true if the host address or port are empty.
Definition QXmppJingleData.cpp:1665
Type
This enum is used to describe a candidate's type.
Definition QXmppJingleData.h:281
@ HostType
Host candidate, a local address/port.
Definition QXmppJingleData.h:282
@ PeerReflexiveType
Definition QXmppJingleData.h:283
@ RelayedType
Definition QXmppJingleData.h:287
@ ServerReflexiveType
Definition QXmppJingleData.h:285
void setGeneration(int generation)
Definition QXmppJingleData.cpp:1573
void setType(QXmppJingleCandidate::Type)
Sets the candidate type (e.g. "host").
Definition QXmppJingleData.cpp:1659
void setComponent(int component)
Sets the candidates's component ID.
Definition QXmppJingleData.cpp:1529
QHostAddress host() const
Definition QXmppJingleData.cpp:1581
QString protocol() const
Returns the candidate's protocol (e.g. "udp").
Definition QXmppJingleData.cpp:1641
QXmppJingleCandidate()
Definition QXmppJingleData.cpp:1507
void setHost(const QHostAddress &host)
Sets the candidate's host address.
Definition QXmppJingleData.cpp:1587
int component() const
Returns the candidate's component ID.
Definition QXmppJingleData.cpp:1523
quint16 port() const
Returns the candidate's port number.
Definition QXmppJingleData.cpp:1617
void setPriority(int priority)
Sets the candidate's priority.
Definition QXmppJingleData.cpp:1635
QString foundation() const
Definition QXmppJingleData.cpp:1539
void setNetwork(int network)
Sets the network index (starting at 0) the candidate is on.
Definition QXmppJingleData.cpp:1611
QString id() const
Returns the candidate's unique identifier.
Definition QXmppJingleData.cpp:1593
The QXmppJingleDescription class represents descriptions for Jingle elements including media type,...
Definition QXmppJingleData.h:246
void setPayloadTypes(const QList< QXmppJinglePayloadType > &payloadTypes)
Definition QXmppJingleData.cpp:2082
quint32 ssrc() const
Definition QXmppJingleData.cpp:2033
const QList< QXmppJinglePayloadType > & payloadTypes() const
Definition QXmppJingleData.cpp:2074
void setType(const QString &type)
Definition QXmppJingleData.cpp:2057
void setSsrc(quint32 ssrc)
Definition QXmppJingleData.cpp:2041
QString media() const
Definition QXmppJingleData.cpp:2017
QString type() const
Definition QXmppJingleData.cpp:2049
void setMedia(const QString &media)
Definition QXmppJingleData.cpp:2025
void addPayloadType(const QXmppJinglePayloadType &payload)
Definition QXmppJingleData.cpp:2065
The QXmppJingleIq class represents an IQ used for initiating media sessions as specified by XEP-0166:...
Definition QXmppJingleData.h:409
QString responder() const
Returns the session responder.
Definition QXmppJingleData.cpp:1248
void setSid(const QString &sid)
Sets the session ID.
Definition QXmppJingleData.cpp:1298
void setRinging(bool ringing)
Definition QXmppJingleData.cpp:1282
void addContent(const Content &content)
Definition QXmppJingleData.cpp:1198
QXmppJingleIq & operator=(const QXmppJingleIq &other)
Assignment operator.
void setContents(const QList< Content > &contents)
Definition QXmppJingleData.cpp:1218
void setResponder(const QString &responder)
Sets the session responder.
Definition QXmppJingleData.cpp:1254
std::variant< RtpSessionStateActive, RtpSessionStateHold, RtpSessionStateUnhold, RtpSessionStateMuting, RtpSessionStateRinging > RtpSessionState
Definition QXmppJingleData.h:451
QXmppJingleIq & operator=(QXmppJingleIq &&)
Move-assignment operator.
Action action() const
Definition QXmppJingleData.cpp:1179
QXmppJingleIq(QXmppJingleIq &&)
Move-constructor.
QString sid() const
Returns the session ID.
Definition QXmppJingleData.cpp:1292
void setAction(Action action)
Definition QXmppJingleData.cpp:1188
std::optional< RtpSessionState > rtpSessionState() const
Definition QXmppJingleData.cpp:1335
QList< Content > contents() const
Definition QXmppJingleData.cpp:1208
QString mujiGroupChatJid() const
Definition QXmppJingleData.cpp:1310
bool ringing() const
Definition QXmppJingleData.cpp:1265
Action
This enum is used to describe a Jingle action.
Definition QXmppJingleData.h:412
Creator
Definition QXmppJingleData.h:430
@ Initiator
The initiator generated the content type.
Definition QXmppJingleData.h:432
@ Responder
The responder generated the content type.
Definition QXmppJingleData.h:434
QString initiator() const
Returns the session initiator.
Definition QXmppJingleData.cpp:1224
QXmppJingleReason Reason
Alias to QXmppJingleReason for compatibility.
Definition QXmppJingleData.h:454
void setInitiator(const QString &initiator)
Sets the session initiator.
Definition QXmppJingleData.cpp:1230
QXmppJingleIq()
Constructs a QXmppJingleIq.
Definition QXmppJingleData.cpp:1159
QXmppJingleIq(const QXmppJingleIq &other)
Copy-constructor.
void setMujiGroupChatJid(const QString &mujiGroupChatJid)
Definition QXmppJingleData.cpp:1322
void setRtpSessionState(const std::optional< RtpSessionState > &rtpSessionState)
Definition QXmppJingleData.cpp:1351
QXmppJingleReason & reason()
Returns a reference to the IQ's reason element.
Definition QXmppJingleData.cpp:1236
The QXmppJingleMessageInitiationElement class represents a Jingle Message Initiation element as speci...
Definition QXmppJingleData.h:602
QXmppJingleMessageInitiationElement()
Constructs a Jingle Message Initiation element.
Definition QXmppJingleData.cpp:2878
Type
Definition QXmppJingleData.h:604
The QXmppJinglePayloadType class represents a payload type as specified by XEP-0167: Jingle RTP Sessi...
Definition QXmppJingleData.h:200
void setRtpFeedbackIntervals(const QVector< QXmppJingleRtpFeedbackInterval > &rtpFeedbackIntervals)
Definition QXmppJingleData.cpp:1908
unsigned char id() const
Returns the payload type identifier.
Definition QXmppJingleData.cpp:1809
void setClockrate(unsigned int clockrate)
Sets the clockrate in Hz, i.e. the number of samples per second.
Definition QXmppJingleData.cpp:1803
unsigned char channels() const
Returns the number of channels (e.g. 1 for mono, 2 for stereo).
Definition QXmppJingleData.cpp:1785
unsigned int ptime() const
Returns the packet time in milliseconds (20 by default).
Definition QXmppJingleData.cpp:1858
void setParameters(const QMap< QString, QString > ¶meters)
Sets the payload parameters.
Definition QXmppJingleData.cpp:1852
unsigned int maxptime() const
Returns the maximum packet time in milliseconds.
Definition QXmppJingleData.cpp:1822
void setId(unsigned char id)
Sets the payload type identifier.
Definition QXmppJingleData.cpp:1815
void setPtime(unsigned int ptime)
Sets the packet time in milliseconds (20 by default).
Definition QXmppJingleData.cpp:1864
QXmppJinglePayloadType & operator=(const QXmppJinglePayloadType &other)
Definition QXmppJingleData.cpp:1965
void setMaxptime(unsigned int maxptime)
Sets the maximum packet type in milliseconds.
Definition QXmppJingleData.cpp:1828
bool operator==(const QXmppJinglePayloadType &other) const
Definition QXmppJingleData.cpp:1975
void setRtpFeedbackProperties(const QVector< QXmppJingleRtpFeedbackProperty > &rtpFeedbackProperties)
Definition QXmppJingleData.cpp:1888
QVector< QXmppJingleRtpFeedbackProperty > rtpFeedbackProperties() const
Definition QXmppJingleData.cpp:1876
void setChannels(unsigned char channels)
Sets the number of channels (e.g. 1 for mono, 2 for stereo).
Definition QXmppJingleData.cpp:1791
QMap< QString, QString > parameters() const
Returns the payload parameters.
Definition QXmppJingleData.cpp:1846
QString name() const
Returns the payload type name.
Definition QXmppJingleData.cpp:1834
void setName(const QString &name)
Sets the payload type name.
Definition QXmppJingleData.cpp:1840
unsigned int clockrate() const
Returns the clockrate in Hz, i.e. the number of samples per second.
Definition QXmppJingleData.cpp:1797
QVector< QXmppJingleRtpFeedbackInterval > rtpFeedbackIntervals() const
Definition QXmppJingleData.cpp:1898
Definition QXmppJingleData.h:344
Type
This enum is used to describe a reason's type.
Definition QXmppJingleData.h:347
RtpErrorCondition
Definition QXmppJingleData.h:370
@ InvalidCrypto
The encryption offer is rejected.
Definition QXmppJingleData.h:374
@ NoErrorCondition
There is no error condition.
Definition QXmppJingleData.h:372
@ CryptoRequired
Encryption is required but not offered.
Definition QXmppJingleData.h:376
static bool isJingleRtpCryptoElement(const QDomElement &element)
Definition QXmppJingleData.cpp:2362
void setSessionParams(const QString &sessionParams)
Definition QXmppJingleData.cpp:2328
QString cryptoSuite() const
Definition QXmppJingleData.cpp:2277
QXmppJingleRtpCryptoElement()
Definition QXmppJingleData.cpp:2244
uint32_t tag() const
Definition QXmppJingleData.cpp:2256
QString keyParams() const
Definition QXmppJingleData.cpp:2298
QString sessionParams() const
Definition QXmppJingleData.cpp:2318
void setCryptoSuite(const QString &cryptoSuite)
Definition QXmppJingleData.cpp:2288
void setTag(uint32_t tag)
Definition QXmppJingleData.cpp:2266
void setKeyParams(const QString &keyParams)
Definition QXmppJingleData.cpp:2308
void setRequired(bool isRequired)
Definition QXmppJingleData.cpp:2408
QVector< QXmppJingleRtpCryptoElement > cryptoElements() const
Definition QXmppJingleData.cpp:2418
static bool isJingleRtpEncryption(const QDomElement &element)
Definition QXmppJingleData.cpp:2474
QXmppJingleRtpEncryption()
Definition QXmppJingleData.cpp:2386
void setCryptoElements(const QVector< QXmppJingleRtpCryptoElement > &cryptoElements)
Definition QXmppJingleData.cpp:2428
bool isRequired() const
Definition QXmppJingleData.cpp:2398
static bool isJingleRtpFeedbackInterval(const QDomElement &element)
Definition QXmppJingleData.cpp:2672
QXmppJingleRtpFeedbackInterval()
Definition QXmppJingleData.cpp:2624
uint64_t value() const
Definition QXmppJingleData.cpp:2635
void setValue(uint64_t value)
Definition QXmppJingleData.cpp:2645
QVector< QXmppSdpParameter > parameters() const
Definition QXmppJingleData.cpp:2555
void setType(const QString &type)
Definition QXmppJingleData.cpp:2522
void setParameters(const QVector< QXmppSdpParameter > ¶meters)
Definition QXmppJingleData.cpp:2569
static bool isJingleRtpFeedbackProperty(const QDomElement &element)
Definition QXmppJingleData.cpp:2606
QString type() const
Definition QXmppJingleData.cpp:2512
void setSubtype(const QString &subtype)
Definition QXmppJingleData.cpp:2545
QString subtype() const
Definition QXmppJingleData.cpp:2532
QXmppJingleRtpFeedbackProperty()
Definition QXmppJingleData.cpp:2500
virtual void parse(const QDomElement &)=0
virtual void toXml(QXmlStreamWriter *writer) const =0
QString value() const
Definition QXmppJingleData.cpp:2172
QXmppSdpParameter()
Definition QXmppJingleData.cpp:2140
void setName(const QString &name)
Definition QXmppJingleData.cpp:2162
void setValue(const QString &value)
Definition QXmppJingleData.cpp:2186
QString name() const
Definition QXmppJingleData.cpp:2152
static bool isSdpParameter(const QDomElement &element)
Definition QXmppJingleData.cpp:2218
Definition QXmppJingleData.h:437
Definition QXmppJingleData.h:438
Definition QXmppJingleData.h:440
QString name
Session to be muted (e.g., only audio or video)
Definition QXmppJingleData.h:447
bool isMute
Definition QXmppJingleData.h:443
Creator creator
Creator of the corresponding session.
Definition QXmppJingleData.h:445
Definition QXmppJingleData.h:449
Definition QXmppJingleData.h:439