Loading...
Searching...
No Matches
QXmppJingleData.h
// SPDX-FileCopyrightText: 2010 Jeremy Lainé <jeremy.laine@m4x.org>
// SPDX-FileCopyrightText: 2022 Melvin Keskin <melvo@olomono.de>
// SPDX-FileCopyrightText: 2023 Tibor Csötönyi <work@taibsu.de>
//
// SPDX-License-Identifier: LGPL-2.1-or-later
#ifndef QXMPPJINGLEIQ_H
#define QXMPPJINGLEIQ_H
#include "QXmppConstants_p.h"
#include "QXmppIq.h"
#include <variant>
#include <QHostAddress>
class QXmppJingleCandidatePrivate;
class QXmppJingleRtpDescriptionPrivate;
class QXmppJingleIqContentPrivate;
class QXmppJingleIqReasonPrivate;
class QXmppJingleIqPrivate;
class QXmppJinglePayloadTypePrivate;
class QXmppJingleRtpCryptoElementPrivate;
class QXmppJingleRtpEncryptionPrivate;
class QXmppJingleRtpFeedbackPropertyPrivate;
class QXmppJingleRtpHeaderExtensionPropertyPrivate;
class QXmppSdpParameterPrivate;
class QXmppJingleMessageInitiationElementPrivate;
class QXmppCallInviteElementPrivate;
class QXMPP_EXPORT QXmppSdpParameter
{
public:
QXmppSdpParameter();
QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppSdpParameter)
QString name() const;
void setName(const QString &name);
QString value() const;
void setValue(const QString &value);
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;
static bool isSdpParameter(const QDomElement &element);
private:
QSharedDataPointer<QXmppSdpParameterPrivate> d;
};
class QXMPP_EXPORT QXmppJingleRtpCryptoElement
{
public:
QXmppJingleRtpCryptoElement();
QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleRtpCryptoElement)
uint32_t tag() const;
void setTag(uint32_t tag);
QString cryptoSuite() const;
void setCryptoSuite(const QString &cryptoSuite);
QString keyParams() const;
void setKeyParams(const QString &keyParams);
QString sessionParams() const;
void setSessionParams(const QString &sessionParams);
static constexpr std::tuple XmlTag = { u"crypto", QXmpp::Private::ns_jingle_rtp };
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;
static bool isJingleRtpCryptoElement(const QDomElement &element);
private:
QSharedDataPointer<QXmppJingleRtpCryptoElementPrivate> d;
};
class QXMPP_EXPORT QXmppJingleRtpEncryption
{
public:
QXmppJingleRtpEncryption();
QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleRtpEncryption)
bool isRequired() const;
void setRequired(bool isRequired);
QVector<QXmppJingleRtpCryptoElement> cryptoElements() const;
void setCryptoElements(const QVector<QXmppJingleRtpCryptoElement> &cryptoElements);
static constexpr std::tuple XmlTag = { u"encryption", QXmpp::Private::ns_jingle_rtp };
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;
static bool isJingleRtpEncryption(const QDomElement &element);
private:
QSharedDataPointer<QXmppJingleRtpEncryptionPrivate> d;
};
class QXMPP_EXPORT QXmppJingleRtpFeedbackProperty
{
public:
QXmppJingleRtpFeedbackProperty();
QXmppJingleRtpFeedbackProperty(const QString &type, const QString &subtype = {});
QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleRtpFeedbackProperty)
QString type() const;
void setType(const QString &type);
QString subtype() const;
void setSubtype(const QString &subtype);
QVector<QXmppSdpParameter> parameters() const;
void setParameters(const QVector<QXmppSdpParameter> &parameters);
static constexpr std::tuple XmlTag = { u"rtcp-fb", QXmpp::Private::ns_jingle_rtcp_fb };
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;
static bool isJingleRtpFeedbackProperty(const QDomElement &element);
private:
QSharedDataPointer<QXmppJingleRtpFeedbackPropertyPrivate> d;
};
class QXMPP_EXPORT QXmppJingleRtpFeedbackInterval
{
public:
QXmppJingleRtpFeedbackInterval();
QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleRtpFeedbackInterval)
uint64_t value() const;
void setValue(uint64_t value);
static constexpr std::tuple XmlTag = { u"rtcp-fb-trr-int", QXmpp::Private::ns_jingle_rtcp_fb };
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;
static bool isJingleRtpFeedbackInterval(const QDomElement &element);
private:
uint64_t m_value;
};
class QXMPP_EXPORT QXmppJingleRtpHeaderExtensionProperty
{
public:
enum Senders {
Both,
Initiator,
Responder
};
QXmppJingleRtpHeaderExtensionProperty();
QXmppJingleRtpHeaderExtensionProperty(const QString &uri, uint32_t id);
QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleRtpHeaderExtensionProperty)
uint32_t id() const;
void setId(uint32_t id);
QString uri() const;
void setUri(const QString &uri);
Senders senders() const;
void setSenders(Senders senders);
QVector<QXmppSdpParameter> parameters() const;
void setParameters(const QVector<QXmppSdpParameter> &parameters);
static constexpr std::tuple XmlTag = { u"rtp-hdrext", QXmpp::Private::ns_jingle_rtp_hdrext };
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;
static bool isJingleRtpHeaderExtensionProperty(const QDomElement &element);
private:
QSharedDataPointer<QXmppJingleRtpHeaderExtensionPropertyPrivate> d;
};
class QXMPP_EXPORT QXmppJinglePayloadType
{
public:
QXmppJinglePayloadType();
QXmppJinglePayloadType(const QXmppJinglePayloadType &other);
~QXmppJinglePayloadType();
unsigned char channels() const;
void setChannels(unsigned char channels);
unsigned int clockrate() const;
void setClockrate(unsigned int clockrate);
unsigned char id() const;
void setId(unsigned char id);
unsigned int maxptime() const;
void setMaxptime(unsigned int maxptime);
QString name() const;
void setName(const QString &name);
QMap<QString, QString> parameters() const;
void setParameters(const QMap<QString, QString> &parameters);
unsigned int ptime() const;
void setPtime(unsigned int ptime);
QVector<QXmppJingleRtpFeedbackProperty> rtpFeedbackProperties() const;
void setRtpFeedbackProperties(const QVector<QXmppJingleRtpFeedbackProperty> &rtpFeedbackProperties);
QVector<QXmppJingleRtpFeedbackInterval> rtpFeedbackIntervals() const;
void setRtpFeedbackIntervals(const QVector<QXmppJingleRtpFeedbackInterval> &rtpFeedbackIntervals);
static constexpr std::tuple XmlTag = { u"payload-type", QXmpp::Private::ns_jingle_rtp };
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;
QXmppJinglePayloadType &operator=(const QXmppJinglePayloadType &other);
bool operator==(const QXmppJinglePayloadType &other) const;
private:
QSharedDataPointer<QXmppJinglePayloadTypePrivate> d;
};
class QXMPP_EXPORT QXmppJingleRtpDescription
{
public:
QXmppJingleRtpDescription();
QXmppJingleRtpDescription(const QString &media, quint32 ssrc = 0, const QList<QXmppJinglePayloadType> &payloadTypes = {});
QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleRtpDescription)
QString media() const;
void setMedia(const QString &media);
quint32 ssrc() const;
void setSsrc(quint32 ssrc);
void addPayloadType(const QXmppJinglePayloadType &payload);
const QList<QXmppJinglePayloadType> &payloadTypes() const;
void setPayloadTypes(const QList<QXmppJinglePayloadType> &payloadTypes);
static constexpr std::tuple XmlTag = { u"description", QXmpp::Private::ns_jingle_rtp };
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;
private:
QSharedDataPointer<QXmppJingleRtpDescriptionPrivate> d;
};
#if QXMPP_DEPRECATED_SINCE(1, 11)
using QXmppJingleDescription [[deprecated]] = QXmppJingleRtpDescription;
#endif
class QXMPP_EXPORT QXmppJingleCandidate
{
public:
enum Type {
HostType,
PeerReflexiveType,
ServerReflexiveType,
RelayedType
};
QXmppJingleCandidate();
QXmppJingleCandidate(const QXmppJingleCandidate &other);
QXmppJingleCandidate(QXmppJingleCandidate &&);
~QXmppJingleCandidate();
QXmppJingleCandidate &operator=(const QXmppJingleCandidate &other);
QXmppJingleCandidate &operator=(QXmppJingleCandidate &&);
int component() const;
void setComponent(int component);
QString foundation() const;
void setFoundation(const QString &foundation);
int generation() const;
void setGeneration(int generation);
QHostAddress host() const;
void setHost(const QHostAddress &host);
QString id() const;
void setId(const QString &id);
int network() const;
void setNetwork(int network);
quint16 port() const;
void setPort(quint16 port);
int priority() const;
void setPriority(int priority);
QString protocol() const;
void setProtocol(const QString &protocol);
QXmppJingleCandidate::Type type() const;
void setType(QXmppJingleCandidate::Type);
bool isNull() const;
static constexpr std::tuple XmlTag = { u"candidate", QXmpp::Private::ns_jingle_ice_udp };
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;
private:
QSharedDataPointer<QXmppJingleCandidatePrivate> d;
};
class QXMPP_EXPORT QXmppJingleReason
{
public:
enum Type {
None,
AlternativeSession,
Busy,
Cancel,
ConnectivityError,
Decline,
Expired,
FailedApplication,
FailedTransport,
GeneralError,
Gone,
IncompatibleParameters,
MediaError,
SecurityError,
Success,
Timeout,
UnsupportedApplications,
UnsupportedTransports
};
enum RtpErrorCondition {
NoErrorCondition,
InvalidCrypto,
CryptoRequired
};
QXmppJingleReason();
QXmppJingleReason(Type, const QString &, std::optional<RtpErrorCondition>);
QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleReason)
QString text() const;
void setText(const QString &text);
Type type() const;
void setType(Type type);
RtpErrorCondition rtpErrorCondition() const;
void setRtpErrorCondition(RtpErrorCondition rtpErrorCondition);
static constexpr std::tuple XmlTag = { u"reason", QXmpp::Private::ns_jingle };
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;
private:
QSharedDataPointer<QXmppJingleIqReasonPrivate> d;
};
class QXMPP_EXPORT QXmppJingleIq : public QXmppIq
{
public:
enum Action {
ContentAccept,
ContentAdd,
ContentModify,
ContentReject,
ContentRemove,
DescriptionInfo,
SecurityInfo,
SessionAccept,
SessionInfo,
SessionInitiate,
SessionTerminate,
TransportAccept,
TransportInfo,
TransportReject,
TransportReplace,
};
enum Creator {
Initiator,
Responder
};
struct RtpSessionStateActive { };
struct RtpSessionStateHold { };
struct RtpSessionStateUnhold { };
struct RtpSessionStateMuting {
bool isMute;
Creator creator;
QString name;
};
struct RtpSessionStateRinging { };
using RtpSessionState = std::variant<RtpSessionStateActive, RtpSessionStateHold, RtpSessionStateUnhold, RtpSessionStateMuting, RtpSessionStateRinging>;
using Reason = QXmppJingleReason;
class QXMPP_EXPORT Content
{
public:
Content();
Content(const QXmppJingleIq::Content &other);
Content(QXmppJingleIq::Content &&);
~Content();
Content &operator=(const Content &other);
Content &operator=(Content &&);
QString creator() const;
void setCreator(const QString &creator);
QString name() const;
void setName(const QString &name);
QString senders() const;
void setSenders(const QString &senders);
// XEP-0167: Jingle RTP Sessions
QXmppJingleRtpDescription description() const;
void setDescription(const QXmppJingleRtpDescription &description);
#if QXMPP_DEPRECATED_SINCE(1, 6)
QString descriptionMedia() const;
void setDescriptionMedia(const QString &media);
quint32 descriptionSsrc() const;
void setDescriptionSsrc(quint32 ssrc);
void addPayloadType(const QXmppJinglePayloadType &payload);
QList<QXmppJinglePayloadType> payloadTypes() const;
void setPayloadTypes(const QList<QXmppJinglePayloadType> &payloadTypes);
#endif
bool isRtpMultiplexingSupported() const;
void setRtpMultiplexingSupported(bool isRtpMultiplexingSupported);
std::optional<QXmppJingleRtpEncryption> rtpEncryption() const;
void setRtpEncryption(const std::optional<QXmppJingleRtpEncryption> &rtpEncryption);
void addTransportCandidate(const QXmppJingleCandidate &candidate);
QList<QXmppJingleCandidate> transportCandidates() const;
void setTransportCandidates(const QList<QXmppJingleCandidate> &candidates);
QString transportUser() const;
void setTransportUser(const QString &user);
QString transportPassword() const;
void setTransportPassword(const QString &password);
QVector<QXmppJingleRtpFeedbackProperty> rtpFeedbackProperties() const;
void setRtpFeedbackProperties(const QVector<QXmppJingleRtpFeedbackProperty> &rtpFeedbackProperties);
QVector<QXmppJingleRtpFeedbackInterval> rtpFeedbackIntervals() const;
void setRtpFeedbackIntervals(const QVector<QXmppJingleRtpFeedbackInterval> &rtpFeedbackIntervals);
QVector<QXmppJingleRtpHeaderExtensionProperty> rtpHeaderExtensionProperties() const;
void setRtpHeaderExtensionProperties(const QVector<QXmppJingleRtpHeaderExtensionProperty> &rtpHeaderExtensionProperties);
bool isRtpHeaderExtensionMixingAllowed() const;
void setRtpHeaderExtensionMixingAllowed(bool isRtpHeaderExtensionMixingAllowed);
// XEP-0320: Use of DTLS-SRTP in Jingle Sessions
QByteArray transportFingerprint() const;
void setTransportFingerprint(const QByteArray &fingerprint);
QString transportFingerprintHash() const;
void setTransportFingerprintHash(const QString &hash);
QString transportFingerprintSetup() const;
void setTransportFingerprintSetup(const QString &setup);
static constexpr std::tuple XmlTag = { u"content", QXmpp::Private::ns_jingle };
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;
bool parseSdp(const QString &sdp);
QString toSdp() const;
private:
QSharedDataPointer<QXmppJingleIqContentPrivate> d;
};
QXmppJingleIq();
QXmppJingleIq(const QXmppJingleIq &other);
QXmppJingleIq(QXmppJingleIq &&);
~QXmppJingleIq() override;
QXmppJingleIq &operator=(const QXmppJingleIq &other);
QXmppJingleIq &operator=(QXmppJingleIq &&);
Action action() const;
void setAction(Action action);
void addContent(const Content &content);
QList<Content> contents() const;
void setContents(const QList<Content> &contents);
QString initiator() const;
void setInitiator(const QString &initiator);
std::optional<QXmppJingleReason> actionReason() const;
void setActionReason(const std::optional<QXmppJingleReason> &);
#if QXMPP_DEPRECATED_SINCE(1, 11)
[[deprecated("Use actionReason() instead.")]]
QXmppJingleReason &reason();
[[deprecated("Use actionReason() instead.")]]
const QXmppJingleReason &reason() const;
#endif
QString responder() const;
void setResponder(const QString &responder);
#if QXMPP_DEPRECATED_SINCE(1, 5)
QT_DEPRECATED_X("Use QXmpp::rtpSessionState() instead")
bool ringing() const;
QT_DEPRECATED_X("Use QXmpp::setRtpSessionState() instead")
void setRinging(bool ringing);
#endif
QString sid() const;
void setSid(const QString &sid);
QString mujiGroupChatJid() const;
void setMujiGroupChatJid(const QString &mujiGroupChatJid);
std::optional<RtpSessionState> rtpSessionState() const;
void setRtpSessionState(const std::optional<RtpSessionState> &rtpSessionState);
static constexpr std::tuple<QStringView, QStringView> PayloadXmlTag = { u"jingle", QXmpp::Private::ns_jingle };
[[deprecated("Use QXmpp::isIqType()")]]
static bool isJingleIq(const QDomElement &element);
protected:
void parseElementFromChild(const QDomElement &element) override;
void toXmlElementFromChild(QXmlStreamWriter *writer) const override;
private:
QSharedDataPointer<QXmppJingleIqPrivate> d;
};
class QXMPP_EXPORT QXmppJingleMessageInitiationElement
{
public:
enum class Type {
None,
Propose,
Ringing,
Proceed,
Reject,
Retract,
Finish
};
QXmppJingleMessageInitiationElement();
QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleMessageInitiationElement)
Type type() const;
void setType(Type type);
QString id() const;
void setId(const QString &id);
std::optional<QXmppJingleRtpDescription> description() const;
void setDescription(std::optional<QXmppJingleRtpDescription> description);
QList<QXmppJingleRtpDescription> descriptions() const;
void setDescriptions(const QList<QXmppJingleRtpDescription> &descriptions);
std::optional<QXmppJingleReason> reason() const;
void setReason(std::optional<QXmppJingleReason> reason);
bool containsTieBreak() const;
void setContainsTieBreak(bool containsTieBreak);
QString migratedTo() const;
void setMigratedTo(const QString &migratedTo);
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;
static bool isJingleMessageInitiationElement(const QDomElement &);
private:
QSharedDataPointer<QXmppJingleMessageInitiationElementPrivate> d;
};
class QXMPP_EXPORT QXmppCallInviteElement
{
public:
enum class Type {
None,
Invite,
Retract,
Accept,
Reject,
Left
};
struct Jingle {
QString sid;
std::optional<QString> jid;
bool operator==(const Jingle &other) const { return other.sid == sid && other.jid == jid; }
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;
};
struct External {
QString uri;
bool operator==(const External &other) const { return other.uri == uri; }
static constexpr std::tuple XmlTag = { u"external", QXmpp::Private::ns_call_invites };
void parse(const QDomElement &el);
void toXml(QXmlStreamWriter *writer) const;
};
QXmppCallInviteElement();
QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppCallInviteElement)
Type type() const;
void setType(Type type);
QString id() const;
void setId(const QString &id);
bool audio() const;
void setAudio(bool audio);
bool video() const;
void setVideo(bool video);
std::optional<Jingle> jingle() const;
void setJingle(std::optional<Jingle> jingle);
std::optional<QVector<External>> external() const;
void setExternal(std::optional<QVector<External>> external);
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;
static bool isCallInviteElement(const QDomElement &);
private:
QSharedDataPointer<QXmppCallInviteElementPrivate> d;
};
Q_DECLARE_METATYPE(QXmppJingleReason::RtpErrorCondition)
#endif
QXmppCallInviteElement::Type
Type
Definition QXmppJingleData.h:691
QXmppCallInviteElement::QXmppCallInviteElement
QXmppCallInviteElement()
Constructs a Call Invite element.
Definition QXmppJingleData.cpp:2970
QXmppIq::QXmppIq
QXmppIq(QXmppIq::Type type=QXmppIq::Get)
Definition QXmppIq.cpp:39
QXmppJingleCandidate
The QXmppJingleCandidate class represents a transport candidate as specified by XEP-0176: Jingle ICE-...
Definition QXmppJingleData.h:288
QXmppJingleCandidate::setFoundation
void setFoundation(const QString &foundation)
Definition QXmppJingleData.cpp:1493
QXmppJingleCandidate::network
int network() const
Returns the network index (starting at 0) the candidate is on.
Definition QXmppJingleData.cpp:1547
QXmppJingleCandidate::QXmppJingleCandidate
QXmppJingleCandidate(QXmppJingleCandidate &&)
Move-constructor.
QXmppJingleCandidate::setId
void setId(const QString &id)
Sets the candidate's unique identifier.
Definition QXmppJingleData.cpp:1541
QXmppJingleCandidate::generation
int generation() const
Definition QXmppJingleData.cpp:1503
QXmppJingleCandidate::type
QXmppJingleCandidate::Type type() const
Returns the candidate type (e.g. "host").
Definition QXmppJingleData.cpp:1595
QXmppJingleCandidate::priority
int priority() const
Returns the candidate's priority.
Definition QXmppJingleData.cpp:1571
QXmppJingleCandidate::operator=
QXmppJingleCandidate & operator=(const QXmppJingleCandidate &other)
Assignment operator.
QXmppJingleCandidate::operator=
QXmppJingleCandidate & operator=(QXmppJingleCandidate &&)
Move-assignment operator.
QXmppJingleCandidate::setPort
void setPort(quint16 port)
Sets the candidate's port number.
Definition QXmppJingleData.cpp:1565
QXmppJingleCandidate::QXmppJingleCandidate
QXmppJingleCandidate(const QXmppJingleCandidate &other)
Copy-constructor.
QXmppJingleCandidate::setProtocol
void setProtocol(const QString &protocol)
Sets the candidate's protocol (e.g. "udp").
Definition QXmppJingleData.cpp:1589
QXmppJingleCandidate::isNull
bool isNull() const
Returns true if the host address or port are empty.
Definition QXmppJingleData.cpp:1607
QXmppJingleCandidate::Type
Type
This enum is used to describe a candidate's type.
Definition QXmppJingleData.h:291
QXmppJingleCandidate::HostType
@ HostType
Host candidate, a local address/port.
Definition QXmppJingleData.h:292
QXmppJingleCandidate::PeerReflexiveType
@ PeerReflexiveType
Definition QXmppJingleData.h:293
QXmppJingleCandidate::RelayedType
@ RelayedType
Definition QXmppJingleData.h:297
QXmppJingleCandidate::ServerReflexiveType
@ ServerReflexiveType
Definition QXmppJingleData.h:295
QXmppJingleCandidate::setGeneration
void setGeneration(int generation)
Definition QXmppJingleData.cpp:1515
QXmppJingleCandidate::setType
void setType(QXmppJingleCandidate::Type)
Sets the candidate type (e.g. "host").
Definition QXmppJingleData.cpp:1601
QXmppJingleCandidate::setComponent
void setComponent(int component)
Sets the candidates's component ID.
Definition QXmppJingleData.cpp:1471
QXmppJingleCandidate::host
QHostAddress host() const
Definition QXmppJingleData.cpp:1523
QXmppJingleCandidate::protocol
QString protocol() const
Returns the candidate's protocol (e.g. "udp").
Definition QXmppJingleData.cpp:1583
QXmppJingleCandidate::QXmppJingleCandidate
QXmppJingleCandidate()
Definition QXmppJingleData.cpp:1449
QXmppJingleCandidate::setHost
void setHost(const QHostAddress &host)
Sets the candidate's host address.
Definition QXmppJingleData.cpp:1529
QXmppJingleCandidate::component
int component() const
Returns the candidate's component ID.
Definition QXmppJingleData.cpp:1465
QXmppJingleCandidate::port
quint16 port() const
Returns the candidate's port number.
Definition QXmppJingleData.cpp:1559
QXmppJingleCandidate::setPriority
void setPriority(int priority)
Sets the candidate's priority.
Definition QXmppJingleData.cpp:1577
QXmppJingleCandidate::foundation
QString foundation() const
Definition QXmppJingleData.cpp:1481
QXmppJingleCandidate::setNetwork
void setNetwork(int network)
Sets the network index (starting at 0) the candidate is on.
Definition QXmppJingleData.cpp:1553
QXmppJingleCandidate::id
QString id() const
Returns the candidate's unique identifier.
Definition QXmppJingleData.cpp:1535
QXmppJingleIq
The QXmppJingleIq class represents an IQ used for initiating media sessions as specified by XEP-0166:...
Definition QXmppJingleData.h:439
QXmppJingleIq::responder
QString responder() const
Returns the session responder.
Definition QXmppJingleData.cpp:1229
QXmppJingleIq::setSid
void setSid(const QString &sid)
Sets the session ID.
Definition QXmppJingleData.cpp:1279
QXmppJingleIq::setRinging
void setRinging(bool ringing)
Definition QXmppJingleData.cpp:1263
QXmppJingleIq::addContent
void addContent(const Content &content)
Definition QXmppJingleData.cpp:1145
QXmppJingleIq::operator=
QXmppJingleIq & operator=(const QXmppJingleIq &other)
Assignment operator.
QXmppJingleIq::setContents
void setContents(const QList< Content > &contents)
Definition QXmppJingleData.cpp:1165
QXmppJingleIq::setResponder
void setResponder(const QString &responder)
Sets the session responder.
Definition QXmppJingleData.cpp:1235
QXmppJingleIq::RtpSessionState
std::variant< RtpSessionStateActive, RtpSessionStateHold, RtpSessionStateUnhold, RtpSessionStateMuting, RtpSessionStateRinging > RtpSessionState
Definition QXmppJingleData.h:481
QXmppJingleIq::operator=
QXmppJingleIq & operator=(QXmppJingleIq &&)
Move-assignment operator.
QXmppJingleIq::action
Action action() const
Definition QXmppJingleData.cpp:1126
QXmppJingleIq::setActionReason
void setActionReason(const std::optional< QXmppJingleReason > &)
Definition QXmppJingleData.cpp:1200
QXmppJingleIq::QXmppJingleIq
QXmppJingleIq(QXmppJingleIq &&)
Move-constructor.
QXmppJingleIq::sid
QString sid() const
Returns the session ID.
Definition QXmppJingleData.cpp:1273
QXmppJingleIq::setAction
void setAction(Action action)
Definition QXmppJingleData.cpp:1135
QXmppJingleIq::rtpSessionState
std::optional< RtpSessionState > rtpSessionState() const
Definition QXmppJingleData.cpp:1316
QXmppJingleIq::contents
QList< Content > contents() const
Definition QXmppJingleData.cpp:1155
QXmppJingleIq::mujiGroupChatJid
QString mujiGroupChatJid() const
Definition QXmppJingleData.cpp:1291
QXmppJingleIq::actionReason
std::optional< QXmppJingleReason > actionReason() const
Definition QXmppJingleData.cpp:1187
QXmppJingleIq::ringing
bool ringing() const
Definition QXmppJingleData.cpp:1246
QXmppJingleIq::Action
Action
This enum is used to describe a Jingle action.
Definition QXmppJingleData.h:442
QXmppJingleIq::Creator
Creator
Definition QXmppJingleData.h:460
QXmppJingleIq::Initiator
@ Initiator
The initiator generated the content type.
Definition QXmppJingleData.h:462
QXmppJingleIq::Responder
@ Responder
The responder generated the content type.
Definition QXmppJingleData.h:464
QXmppJingleIq::initiator
QString initiator() const
Returns the session initiator.
Definition QXmppJingleData.cpp:1171
QXmppJingleIq::Reason
QXmppJingleReason Reason
Alias to QXmppJingleReason for compatibility.
Definition QXmppJingleData.h:484
QXmppJingleIq::setInitiator
void setInitiator(const QString &initiator)
Sets the session initiator.
Definition QXmppJingleData.cpp:1177
QXmppJingleIq::QXmppJingleIq
QXmppJingleIq()
Constructs a QXmppJingleIq.
Definition QXmppJingleData.cpp:1106
QXmppJingleIq::QXmppJingleIq
QXmppJingleIq(const QXmppJingleIq &other)
Copy-constructor.
QXmppJingleIq::setMujiGroupChatJid
void setMujiGroupChatJid(const QString &mujiGroupChatJid)
Definition QXmppJingleData.cpp:1303
QXmppJingleIq::setRtpSessionState
void setRtpSessionState(const std::optional< RtpSessionState > &rtpSessionState)
Definition QXmppJingleData.cpp:1332
QXmppJingleIq::reason
QXmppJingleReason & reason()
Definition QXmppJingleData.cpp:1213
QXmppJingleMessageInitiationElement
The QXmppJingleMessageInitiationElement class represents a Jingle Message Initiation element as speci...
Definition QXmppJingleData.h:642
QXmppJingleMessageInitiationElement::QXmppJingleMessageInitiationElement
QXmppJingleMessageInitiationElement()
Constructs a Jingle Message Initiation element.
Definition QXmppJingleData.cpp:2743
QXmppJingleMessageInitiationElement::Type
Type
Definition QXmppJingleData.h:644
QXmppJinglePayloadType
The QXmppJinglePayloadType class represents a payload type as specified by XEP-0167: Jingle RTP Sessi...
Definition QXmppJingleData.h:206
QXmppJinglePayloadType::setRtpFeedbackIntervals
void setRtpFeedbackIntervals(const QVector< QXmppJingleRtpFeedbackInterval > &rtpFeedbackIntervals)
Definition QXmppJingleData.cpp:1807
QXmppJinglePayloadType::id
unsigned char id() const
Returns the payload type identifier.
Definition QXmppJingleData.cpp:1708
QXmppJinglePayloadType::setClockrate
void setClockrate(unsigned int clockrate)
Sets the clockrate in Hz, i.e. the number of samples per second.
Definition QXmppJingleData.cpp:1702
QXmppJinglePayloadType::channels
unsigned char channels() const
Returns the number of channels (e.g. 1 for mono, 2 for stereo).
Definition QXmppJingleData.cpp:1684
QXmppJinglePayloadType::ptime
unsigned int ptime() const
Returns the packet time in milliseconds (20 by default).
Definition QXmppJingleData.cpp:1757
QXmppJinglePayloadType::setParameters
void setParameters(const QMap< QString, QString > &parameters)
Sets the payload parameters.
Definition QXmppJingleData.cpp:1751
QXmppJinglePayloadType::maxptime
unsigned int maxptime() const
Returns the maximum packet time in milliseconds.
Definition QXmppJingleData.cpp:1721
QXmppJinglePayloadType::setId
void setId(unsigned char id)
Sets the payload type identifier.
Definition QXmppJingleData.cpp:1714
QXmppJinglePayloadType::setPtime
void setPtime(unsigned int ptime)
Sets the packet time in milliseconds (20 by default).
Definition QXmppJingleData.cpp:1763
QXmppJinglePayloadType::operator=
QXmppJinglePayloadType & operator=(const QXmppJinglePayloadType &other)
Definition QXmppJingleData.cpp:1860
QXmppJinglePayloadType::setMaxptime
void setMaxptime(unsigned int maxptime)
Sets the maximum packet type in milliseconds.
Definition QXmppJingleData.cpp:1727
QXmppJinglePayloadType::operator==
bool operator==(const QXmppJinglePayloadType &other) const
Definition QXmppJingleData.cpp:1870
QXmppJinglePayloadType::setRtpFeedbackProperties
void setRtpFeedbackProperties(const QVector< QXmppJingleRtpFeedbackProperty > &rtpFeedbackProperties)
Definition QXmppJingleData.cpp:1787
QXmppJinglePayloadType::rtpFeedbackProperties
QVector< QXmppJingleRtpFeedbackProperty > rtpFeedbackProperties() const
Definition QXmppJingleData.cpp:1775
QXmppJinglePayloadType::setChannels
void setChannels(unsigned char channels)
Sets the number of channels (e.g. 1 for mono, 2 for stereo).
Definition QXmppJingleData.cpp:1690
QXmppJinglePayloadType::parameters
QMap< QString, QString > parameters() const
Returns the payload parameters.
Definition QXmppJingleData.cpp:1745
QXmppJinglePayloadType::name
QString name() const
Returns the payload type name.
Definition QXmppJingleData.cpp:1733
QXmppJinglePayloadType::setName
void setName(const QString &name)
Sets the payload type name.
Definition QXmppJingleData.cpp:1739
QXmppJinglePayloadType::clockrate
unsigned int clockrate() const
Returns the clockrate in Hz, i.e. the number of samples per second.
Definition QXmppJingleData.cpp:1696
QXmppJinglePayloadType::rtpFeedbackIntervals
QVector< QXmppJingleRtpFeedbackInterval > rtpFeedbackIntervals() const
Definition QXmppJingleData.cpp:1797
QXmppJingleReason
Definition QXmppJingleData.h:352
QXmppJingleReason::QXmppJingleReason
QXmppJingleReason()
Constructs an empty QXmppJingleReason.
Definition QXmppJingleData.cpp:985
QXmppJingleReason::Type
Type
This enum is used to describe a reason's type.
Definition QXmppJingleData.h:355
QXmppJingleReason::Gone
@ Gone
The entity is going offline or is no longer available.
Definition QXmppJingleData.h:379
QXmppJingleReason::IncompatibleParameters
@ IncompatibleParameters
Definition QXmppJingleData.h:382
QXmppJingleReason::Busy
@ Busy
The party is busy and cannot accept a session.
Definition QXmppJingleData.h:362
QXmppJingleReason::Decline
@ Decline
The party wishes to formally decline the session.
Definition QXmppJingleData.h:368
QXmppJingleReason::Success
@ Success
Definition QXmppJingleData.h:389
QXmppJingleReason::Expired
@ Expired
Definition QXmppJingleData.h:371
QXmppJingleReason::Timeout
@ Timeout
A request has not been answered so the sender is timing out the request.
Definition QXmppJingleData.h:391
QXmppJingleReason::GeneralError
@ GeneralError
The action is related to a non-specific application error.
Definition QXmppJingleData.h:377
QXmppJingleReason::FailedApplication
@ FailedApplication
The party has been unable to initialize processing related to the application type.
Definition QXmppJingleData.h:373
QXmppJingleReason::ConnectivityError
@ ConnectivityError
The action is related to connectivity problems.
Definition QXmppJingleData.h:366
QXmppJingleReason::FailedTransport
@ FailedTransport
The party has been unable to establish connectivity for the transport method.
Definition QXmppJingleData.h:375
QXmppJingleReason::Cancel
@ Cancel
The initiator wishes to formally cancel the session initiation request.
Definition QXmppJingleData.h:364
QXmppJingleReason::MediaError
@ MediaError
The action is related to media processing problems.
Definition QXmppJingleData.h:384
QXmppJingleReason::AlternativeSession
@ AlternativeSession
Definition QXmppJingleData.h:360
QXmppJingleReason::UnsupportedApplications
@ UnsupportedApplications
The party supports none of the offered application types.
Definition QXmppJingleData.h:393
QXmppJingleReason::SecurityError
@ SecurityError
The action is related to a violation of local security policies.
Definition QXmppJingleData.h:386
QXmppJingleReason::UnsupportedTransports
@ UnsupportedTransports
The party supports none of the offered transport methods.
Definition QXmppJingleData.h:395
QXmppJingleReason::RtpErrorCondition
RtpErrorCondition
Definition QXmppJingleData.h:400
QXmppJingleReason::InvalidCrypto
@ InvalidCrypto
The encryption offer is rejected.
Definition QXmppJingleData.h:404
QXmppJingleReason::NoErrorCondition
@ NoErrorCondition
There is no error condition.
Definition QXmppJingleData.h:402
QXmppJingleReason::CryptoRequired
@ CryptoRequired
Encryption is required but not offered.
Definition QXmppJingleData.h:406
QXmppJingleRtpCryptoElement::isJingleRtpCryptoElement
static bool isJingleRtpCryptoElement(const QDomElement &element)
Definition QXmppJingleData.cpp:2235
QXmppJingleRtpCryptoElement::setSessionParams
void setSessionParams(const QString &sessionParams)
Definition QXmppJingleData.cpp:2200
QXmppJingleRtpCryptoElement::cryptoSuite
QString cryptoSuite() const
Definition QXmppJingleData.cpp:2149
QXmppJingleRtpCryptoElement::QXmppJingleRtpCryptoElement
QXmppJingleRtpCryptoElement()
Definition QXmppJingleData.cpp:2116
QXmppJingleRtpCryptoElement::tag
uint32_t tag() const
Definition QXmppJingleData.cpp:2128
QXmppJingleRtpCryptoElement::keyParams
QString keyParams() const
Definition QXmppJingleData.cpp:2170
QXmppJingleRtpCryptoElement::sessionParams
QString sessionParams() const
Definition QXmppJingleData.cpp:2190
QXmppJingleRtpCryptoElement::setCryptoSuite
void setCryptoSuite(const QString &cryptoSuite)
Definition QXmppJingleData.cpp:2160
QXmppJingleRtpCryptoElement::setTag
void setTag(uint32_t tag)
Definition QXmppJingleData.cpp:2138
QXmppJingleRtpCryptoElement::setKeyParams
void setKeyParams(const QString &keyParams)
Definition QXmppJingleData.cpp:2180
QXmppJingleRtpDescription
Represents a description for XEP-0167: Jingle RTP Sessions, including media type, streaming source,...
Definition QXmppJingleData.h:253
QXmppJingleRtpDescription::setPayloadTypes
void setPayloadTypes(const QList< QXmppJinglePayloadType > &payloadTypes)
Definition QXmppJingleData.cpp:1972
QXmppJingleRtpDescription::ssrc
quint32 ssrc() const
Definition QXmppJingleData.cpp:1940
QXmppJingleRtpDescription::media
QString media() const
Definition QXmppJingleData.cpp:1924
QXmppJingleRtpDescription::payloadTypes
const QList< QXmppJinglePayloadType > & payloadTypes() const
Definition QXmppJingleData.cpp:1964
QXmppJingleRtpDescription::setMedia
void setMedia(const QString &media)
Definition QXmppJingleData.cpp:1932
QXmppJingleRtpDescription::addPayloadType
void addPayloadType(const QXmppJinglePayloadType &payload)
Definition QXmppJingleData.cpp:1956
QXmppJingleRtpDescription::setSsrc
void setSsrc(quint32 ssrc)
Definition QXmppJingleData.cpp:1948
QXmppJingleRtpEncryption::setRequired
void setRequired(bool isRequired)
Definition QXmppJingleData.cpp:2281
QXmppJingleRtpEncryption::cryptoElements
QVector< QXmppJingleRtpCryptoElement > cryptoElements() const
Definition QXmppJingleData.cpp:2291
QXmppJingleRtpEncryption::isJingleRtpEncryption
static bool isJingleRtpEncryption(const QDomElement &element)
Definition QXmppJingleData.cpp:2332
QXmppJingleRtpEncryption::QXmppJingleRtpEncryption
QXmppJingleRtpEncryption()
Definition QXmppJingleData.cpp:2259
QXmppJingleRtpEncryption::setCryptoElements
void setCryptoElements(const QVector< QXmppJingleRtpCryptoElement > &cryptoElements)
Definition QXmppJingleData.cpp:2301
QXmppJingleRtpEncryption::isRequired
bool isRequired() const
Definition QXmppJingleData.cpp:2271
QXmppJingleRtpFeedbackInterval::isJingleRtpFeedbackInterval
static bool isJingleRtpFeedbackInterval(const QDomElement &element)
Definition QXmppJingleData.cpp:2535
QXmppJingleRtpFeedbackInterval::QXmppJingleRtpFeedbackInterval
QXmppJingleRtpFeedbackInterval()
Definition QXmppJingleData.cpp:2487
QXmppJingleRtpFeedbackInterval::value
uint64_t value() const
Definition QXmppJingleData.cpp:2498
QXmppJingleRtpFeedbackInterval::setValue
void setValue(uint64_t value)
Definition QXmppJingleData.cpp:2508
QXmppJingleRtpFeedbackProperty::parameters
QVector< QXmppSdpParameter > parameters() const
Definition QXmppJingleData.cpp:2423
QXmppJingleRtpFeedbackProperty::setType
void setType(const QString &type)
Definition QXmppJingleData.cpp:2390
QXmppJingleRtpFeedbackProperty::setParameters
void setParameters(const QVector< QXmppSdpParameter > &parameters)
Definition QXmppJingleData.cpp:2437
QXmppJingleRtpFeedbackProperty::isJingleRtpFeedbackProperty
static bool isJingleRtpFeedbackProperty(const QDomElement &element)
Definition QXmppJingleData.cpp:2469
QXmppJingleRtpFeedbackProperty::type
QString type() const
Definition QXmppJingleData.cpp:2380
QXmppJingleRtpFeedbackProperty::setSubtype
void setSubtype(const QString &subtype)
Definition QXmppJingleData.cpp:2413
QXmppJingleRtpFeedbackProperty::subtype
QString subtype() const
Definition QXmppJingleData.cpp:2400
QXmppJingleRtpFeedbackProperty::QXmppJingleRtpFeedbackProperty
QXmppJingleRtpFeedbackProperty()
Default constructor.
Definition QXmppJingleData.cpp:2356
QXmppJingleRtpHeaderExtensionProperty
The QXmppJingleRtpHeaderExtensionProperty class represents the XEP-0294: Jingle RTP Header Extensions...
Definition QXmppJingleData.h:162
QXmppJingleRtpHeaderExtensionProperty::Senders
Senders
Definition QXmppJingleData.h:164
QXmppJingleRtpHeaderExtensionProperty::Responder
@ Responder
Only the responder is allowed.
Definition QXmppJingleData.h:170
QXmppJingleRtpHeaderExtensionProperty::Initiator
@ Initiator
Only the initiator is allowed.
Definition QXmppJingleData.h:168
QXmppJingleRtpHeaderExtensionProperty::Both
@ Both
The initiator and the sender are allowed.
Definition QXmppJingleData.h:166
QXmppJingleRtpHeaderExtensionProperty::QXmppJingleRtpHeaderExtensionProperty
QXmppJingleRtpHeaderExtensionProperty()
Default constructor.
Definition QXmppJingleData.cpp:2566
QXmppNonza::parse
virtual void parse(const QDomElement &)=0
QXmppNonza::toXml
virtual void toXml(QXmlStreamWriter *writer) const =0
QXmppSdpParameter::value
QString value() const
Definition QXmppJingleData.cpp:2047
QXmppSdpParameter::QXmppSdpParameter
QXmppSdpParameter()
Definition QXmppJingleData.cpp:2015
QXmppSdpParameter::setName
void setName(const QString &name)
Definition QXmppJingleData.cpp:2037
QXmppSdpParameter::setValue
void setValue(const QString &value)
Definition QXmppJingleData.cpp:2061
QXmppSdpParameter::name
QString name() const
Definition QXmppJingleData.cpp:2027
QXmppSdpParameter::isSdpParameter
static bool isSdpParameter(const QDomElement &element)
Definition QXmppJingleData.cpp:2090
QXmppJingleIq::RtpSessionStateActive
Definition QXmppJingleData.h:467
QXmppJingleIq::RtpSessionStateHold
Definition QXmppJingleData.h:468
QXmppJingleIq::RtpSessionStateMuting
Definition QXmppJingleData.h:470
QXmppJingleIq::RtpSessionStateMuting::name
QString name
Session to be muted (e.g., only audio or video).
Definition QXmppJingleData.h:477
QXmppJingleIq::RtpSessionStateMuting::isMute
bool isMute
Definition QXmppJingleData.h:473
QXmppJingleIq::RtpSessionStateMuting::creator
Creator creator
Creator of the corresponding session.
Definition QXmppJingleData.h:475
QXmppJingleIq::RtpSessionStateRinging
Definition QXmppJingleData.h:479
QXmppJingleIq::RtpSessionStateUnhold
Definition QXmppJingleData.h:469