6#ifndef QXMPPJINGLEMESSAGEINITIATIONMANAGER_H
7#define QXMPPJINGLEMESSAGEINITIATIONMANAGER_H
9#include "QXmppClientExtension.h"
10#include "QXmppError.h"
11#include "QXmppJingleIq.h"
12#include "QXmppMessageHandler.h"
13#include "QXmppSendResult.h"
17class QXmppJingleMessageInitiationPrivate;
18class QXmppJingleMessageInitiationManagerPrivate;
20class QXMPP_EXPORT QXmppJingleMessageInitiation :
public QObject
25 std::optional<QXmppJingleReason> reason;
26 bool containsTieBreak;
30 std::optional<QXmppJingleReason> reason;
31 bool containsTieBreak;
35 std::optional<QXmppJingleReason> reason;
40 using Result = std::variant<Rejected, Retracted, Finished, QXmppError>;
42 ~QXmppJingleMessageInitiation();
53 Q_SIGNAL
void proceeded(
const QString &
id,
const QString &remoteResource);
57 QXmppJingleMessageInitiation(QXmppJingleMessageInitiationManager *manager,
const QString &
id,
const QString &
remoteJid);
60 void setId(
const QString &
id);
61 void setRemoteJid(
const QString &
remoteJid);
62 bool isProceeded()
const;
63 void setIsProceeded(
bool isProceeded);
64 bool isFinished()
const;
66 std::unique_ptr<QXmppJingleMessageInitiationPrivate> d;
68 friend class QXmppJingleMessageInitiationManager;
69 friend class tst_QXmppJingleMessageInitiationManager;
78 QXmppJingleMessageInitiationManager();
79 ~QXmppJingleMessageInitiationManager();
86 const QString &remoteJid,
89 const QString &remoteJid,
90 const QList<QXmppJingleRtpDescription> &descriptions);
93 const std::shared_ptr<QXmppJingleMessageInitiation> &jmi,
95 const std::optional<QXmppJingleRtpDescription> &description);
97 const std::shared_ptr<QXmppJingleMessageInitiation> &jmi,
99 const QList<QXmppJingleRtpDescription> &descriptions);
110 const QList<QXmppJingleRtpDescription> &descriptions);
113 const QString &remoteJid);
115 void clear(
const std::shared_ptr<QXmppJingleMessageInitiation> &jmi);
119 bool handleExistingJmi(
const std::shared_ptr<QXmppJingleMessageInitiation> &existingJmi,
const QXmppJingleMessageInitiationElement &jmiElement,
const QString &remoteResource);
121 bool handleTieBreak(
const std::shared_ptr<QXmppJingleMessageInitiation> &existingJmi,
const QXmppJingleMessageInitiationElement &jmiElement,
const QString &remoteResource);
122 bool handleExistingSession(
const std::shared_ptr<QXmppJingleMessageInitiation> &existingJmi,
const QString &jmiElementId);
123 bool handleNonExistingSession(
const std::shared_ptr<QXmppJingleMessageInitiation> &existingJmi,
const QString &jmiElementId,
const QString &remoteResource);
124 std::shared_ptr<QXmppJingleMessageInitiation> addJmi(
const QString &
id,
const QString &remoteJid);
125 const QVector<std::shared_ptr<QXmppJingleMessageInitiation>> &jmis()
const;
128 std::unique_ptr<QXmppJingleMessageInitiationManagerPrivate> d;
130 friend class QXmppJingleMessageInitiationPrivate;
131 friend class tst_QXmppJingleMessageInitiationManager;
virtual QStringList discoveryFeatures() const
Definition QXmppClientExtension.cpp:22
QXmppClientExtension()
Definition QXmppClientExtension.cpp:12
The QXmppJingleMessageInitiationElement class represents a Jingle Message Initiation element as speci...
Definition QXmppJingleData.h:642
The QXmppJingleMessageInitiationManager class makes it possible to retrieve Jingle Message Initiation...
Definition QXmppJingleMessageInitiationManager.h:73
std::variant< std::shared_ptr< QXmppJingleMessageInitiation >, QXmppError > ProposeResult
Definition QXmppJingleMessageInitiationManager.h:76
QXmppTask< ProposeResult > propose(const QString &remoteJid, const QXmppJingleRtpDescription &description)
Definition QXmppJingleMessageInitiationManager.cpp:338
Q_SIGNAL void proposeReceived(const std::shared_ptr< QXmppJingleMessageInitiation > &jmi, const QString &id, const QList< QXmppJingleRtpDescription > &descriptions)
Q_SIGNAL void proposed(const std::shared_ptr< QXmppJingleMessageInitiation > &jmi, const QString &id, const std::optional< QXmppJingleRtpDescription > &description)
Q_SIGNAL void proceeded(const QString &id, const QString &remoteResource)
Q_SIGNAL void closed(const Result &result)
QXmppTask< QXmpp::SendResult > finish(std::optional< QXmppJingleReason > reason, const QString &migratedTo={})
Definition QXmppJingleMessageInitiationManager.cpp:178
const QString & remoteJid() const
Definition QXmppJingleMessageInitiationManager.cpp:245
QXmppTask< QXmpp::SendResult > ring()
Definition QXmppJingleMessageInitiationManager.cpp:72
QXmppTask< QXmpp::SendResult > retract(std::optional< QXmppJingleReason > reason, bool containsTieBreak=false)
Definition QXmppJingleMessageInitiationManager.cpp:138
QXmppTask< QXmpp::SendResult > reject(std::optional< QXmppJingleReason > reason, bool containsTieBreak=false)
Definition QXmppJingleMessageInitiationManager.cpp:98
std::variant< Rejected, Retracted, Finished, QXmppError > Result
Variant of Rejected, Retracted, Finished or Error result types.
Definition QXmppJingleMessageInitiationManager.h:40
QXmppTask< QXmpp::SendResult > proceed()
Definition QXmppJingleMessageInitiationManager.cpp:83
Represents a description for XEP-0167: Jingle RTP Sessions, including media type, streaming source,...
Definition QXmppJingleData.h:253
Definition QXmppMessageHandler.h:16
virtual bool handleMessage(const QXmppMessage &)=0
The QXmppMessage class represents an XMPP message.
Definition QXmppMessage.h:64
Definition QXmppTask.h:330
Definition QXmppError.h:17