Loading...
Searching...
No Matches
QXmppPubSubManager.h
// SPDX-FileCopyrightText: 2020 Linus Jahn <lnj@kaidan.im>
// SPDX-FileCopyrightText: 2022 Melvin Keskin <melvo@olomono.de>
//
// SPDX-License-Identifier: LGPL-2.1-or-later
#ifndef QXMPPPUBSUBMANAGER_H
#define QXMPPPUBSUBMANAGER_H
#include "QXmppAsync_p.h"
#include "QXmppClient.h"
#include "QXmppClientExtension.h"
#include "QXmppMessage.h"
#include "QXmppPubSubIq_p.h"
#include "QXmppPubSubPublishOptions.h"
#include "QXmppResultSet.h"
class QXmppPubSubPublishOptions;
class QXmppPubSubSubscribeOptions;
class QXMPP_EXPORT QXmppPubSubManager : public QXmppClientExtension
{
Q_OBJECT
public:
enum ServiceType {
PubSubOrPep,
PubSub,
Pep
};
enum StandardItemId {
Current
};
struct InvalidServiceType { };
template<typename T>
struct Items {
QVector<T> items;
std::optional<QXmppResultSetReply> continuation;
};
using Result = std::variant<QXmpp::Success, QXmppError>;
using FeaturesResult = std::variant<QVector<QString>, InvalidServiceType, QXmppError>;
using NodesResult = std::variant<QVector<QString>, QXmppError>;
using InstantNodeResult = std::variant<QString, QXmppError>;
template<typename T>
using ItemResult = std::variant<T, QXmppError>;
template<typename T>
using ItemsResult = std::variant<Items<T>, QXmppError>;
using ItemIdsResult = std::variant<QVector<QString>, QXmppError>;
using PublishItemResult = std::variant<QString, QXmppError>;
using PublishItemsResult = std::variant<QVector<QString>, QXmppError>;
using SubscriptionsResult = std::variant<QVector<QXmppPubSubSubscription>, QXmppError>;
using AffiliationsResult = std::variant<QVector<QXmppPubSubAffiliation>, QXmppError>;
using OptionsResult = std::variant<QXmppPubSubSubscribeOptions, QXmppError>;
using NodeConfigResult = std::variant<QXmppPubSubNodeConfig, QXmppError>;
QXmppPubSubManager();
~QXmppPubSubManager();
// Generic PubSub (the PubSub service is the given entity)
QXmppTask<NodesResult> requestNodes(const QString &jid);
auto createNode(const QString &jid, const QString &nodeName) -> QXmppTask<Result>;
auto createNode(const QString &jid, const QString &nodeName, const QXmppPubSubNodeConfig &config) -> QXmppTask<Result>;
auto createInstantNode(const QString &jid) -> QXmppTask<InstantNodeResult>;
auto createInstantNode(const QString &jid, const QXmppPubSubNodeConfig &config) -> QXmppTask<InstantNodeResult>;
auto deleteNode(const QString &jid, const QString &nodeName) -> QXmppTask<Result>;
QXmppTask<ItemIdsResult> requestItemIds(const QString &serviceJid, const QString &nodeName);
template<typename T = QXmppPubSubBaseItem>
QXmppTask<ItemResult<T>> requestItem(const QString &jid, const QString &nodeName, const QString &itemId);
template<typename T = QXmppPubSubBaseItem>
QXmppTask<ItemResult<T>> requestItem(const QString &jid, const QString &nodeName, StandardItemId itemId);
template<typename T = QXmppPubSubBaseItem>
QXmppTask<ItemsResult<T>> requestItems(const QString &jid, const QString &nodeName);
template<typename T = QXmppPubSubBaseItem>
QXmppTask<ItemsResult<T>> requestItems(const QString &jid, const QString &nodeName, const QStringList &itemIds);
template<typename T>
QXmppTask<PublishItemResult> publishItem(const QString &jid, const QString &nodeName, const T &item);
template<typename T>
QXmppTask<PublishItemResult> publishItem(const QString &jid, const QString &nodeName, const T &item, const QXmppPubSubPublishOptions &publishOptions);
template<typename T>
QXmppTask<PublishItemsResult> publishItems(const QString &jid, const QString &nodeName, const QVector<T> &items);
template<typename T>
QXmppTask<PublishItemsResult> publishItems(const QString &jid, const QString &nodeName, const QVector<T> &items, const QXmppPubSubPublishOptions &publishOptions);
auto retractItem(const QString &jid, const QString &nodeName, const QString &itemId, bool notify = false) -> QXmppTask<Result>;
auto retractItem(const QString &jid, const QString &nodeName, StandardItemId itemId, bool notify = false) -> QXmppTask<Result>;
auto purgeItems(const QString &jid, const QString &nodeName) -> QXmppTask<Result>;
QXmppTask<SubscriptionsResult> requestSubscriptions(const QString &jid);
QXmppTask<SubscriptionsResult> requestSubscriptions(const QString &jid, const QString &nodeName);
QXmppTask<AffiliationsResult> requestNodeAffiliations(const QString &jid, const QString &nodeName);
QXmppTask<AffiliationsResult> requestAffiliations(const QString &jid);
QXmppTask<AffiliationsResult> requestAffiliations(const QString &jid, const QString &nodeName);
QXmppTask<OptionsResult> requestSubscribeOptions(const QString &service, const QString &nodeName);
QXmppTask<OptionsResult> requestSubscribeOptions(const QString &service, const QString &nodeName, const QString &subscriberJid);
QXmppTask<Result> setSubscribeOptions(const QString &service, const QString &nodeName, const QXmppPubSubSubscribeOptions &options);
QXmppTask<Result> setSubscribeOptions(const QString &service, const QString &nodeName, const QXmppPubSubSubscribeOptions &options, const QString &subscriberJid);
QXmppTask<NodeConfigResult> requestNodeConfiguration(const QString &service, const QString &nodeName);
QXmppTask<Result> configureNode(const QString &service, const QString &nodeName, const QXmppPubSubNodeConfig &config);
QXmppTask<Result> cancelNodeConfiguration(const QString &service, const QString &nodeName);
QXmppTask<Result> subscribeToNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid);
QXmppTask<Result> unsubscribeFromNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid);
// PEP-specific (the PubSub service is the current account)
QXmppTask<NodesResult> requestOwnPepNodes() { return requestNodes(client()->configuration().jidBare()); };
QXmppTask<Result> createOwnPepNode(const QString &nodeName) { return createNode(client()->configuration().jidBare(), nodeName); }
QXmppTask<Result> createOwnPepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config) { return createNode(client()->configuration().jidBare(), nodeName, config); }
QXmppTask<Result> deleteOwnPepNode(const QString &nodeName) { return deleteNode(client()->configuration().jidBare(), nodeName); }
template<typename T = QXmppPubSubBaseItem>
QXmppTask<ItemResult<T>> requestOwnPepItem(const QString &nodeName, const QString &itemId) { return requestItem<T>(client()->configuration().jidBare(), nodeName, itemId); }
template<typename T = QXmppPubSubBaseItem>
QXmppTask<ItemResult<T>> requestOwnPepItem(const QString &nodeName, StandardItemId itemId) { return requestItem<T>(client()->configuration().jidBare(), nodeName, itemId); }
template<typename T = QXmppPubSubBaseItem>
QXmppTask<ItemsResult<T>> requestOwnPepItems(const QString &nodeName) { return requestItems(client()->configuration().jidBare(), nodeName); }
QXmppTask<ItemIdsResult> requestOwnPepItemIds(const QString &nodeName) { return requestItemIds(client()->configuration().jidBare(), nodeName); }
template<typename T>
QXmppTask<PublishItemResult> publishOwnPepItem(const QString &nodeName, const T &item, const QXmppPubSubPublishOptions &publishOptions);
template<typename T>
QXmppTask<PublishItemResult> publishOwnPepItem(const QString &nodeName, const T &item);
template<typename T>
QXmppTask<PublishItemsResult> publishOwnPepItems(const QString &nodeName, const QVector<T> &items, const QXmppPubSubPublishOptions &publishOptions);
template<typename T>
QXmppTask<PublishItemsResult> publishOwnPepItems(const QString &nodeName, const QVector<T> &items);
QXmppTask<Result> retractOwnPepItem(const QString &nodeName, const QString &itemId, bool notify = false) { return retractItem(client()->configuration().jidBare(), nodeName, itemId, notify); }
QXmppTask<Result> retractOwnPepItem(const QString &nodeName, StandardItemId itemId, bool notify = false) { return retractItem(client()->configuration().jidBare(), nodeName, itemId, notify); }
QXmppTask<Result> purgeOwnPepItems(const QString &nodeName) { return purgeItems(client()->configuration().jidBare(), nodeName); }
QXmppTask<NodeConfigResult> requestOwnPepNodeConfiguration(const QString &nodeName) { return requestNodeConfiguration(client()->configuration().jidBare(), nodeName); }
QXmppTask<Result> configureOwnPepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config) { return configureNode(client()->configuration().jidBare(), nodeName, config); }
QXmppTask<Result> cancelOwnPepNodeConfiguration(const QString &nodeName) { return cancelNodeConfiguration(client()->configuration().jidBare(), nodeName); }
static QString standardItemIdToString(StandardItemId itemId);
QStringList discoveryFeatures() const override;
bool handleStanza(const QDomElement &element) override;
private:
// for private requestFeatures() API
friend class tst_QXmppPubSubManager;
friend class QXmppOmemoManagerPrivate;
QXmppTask<FeaturesResult> requestFeatures(const QString &serviceJid, ServiceType serviceType = PubSubOrPep);
QXmppTask<FeaturesResult> requestOwnPepFeatures() { return requestFeatures(client()->configuration().jidBare(), Pep); };
QXmppTask<PublishItemResult> publishItem(QXmpp::Private::PubSubIqBase &&iq);
QXmppTask<PublishItemsResult> publishItems(QXmpp::Private::PubSubIqBase &&iq);
static QXmpp::Private::PubSubIq<> requestItemsIq(const QString &jid, const QString &nodeName, const QStringList &itemIds);
};
template<typename T>
QXmppTask<QXmppPubSubManager::ItemResult<T>> QXmppPubSubManager::requestItem(const QString &jid,
const QString &nodeName,
const QString &itemId)
{
using namespace QXmpp::Private;
return chainIq(client()->sendIq(requestItemsIq(jid, nodeName, { itemId })), this,
[](PubSubIq<T> &&iq) -> ItemResult<T> {
if (!iq.items().isEmpty()) {
return iq.items().constFirst();
}
return QXmppError { QStringLiteral("No such item has been found."), {} };
});
}
template<typename T>
QXmppTask<QXmppPubSubManager::ItemResult<T>> QXmppPubSubManager::requestItem(const QString &jid,
const QString &nodeName,
StandardItemId itemId)
{
return requestItem<T>(jid, nodeName, standardItemIdToString(itemId));
}
template<typename T>
QXmppTask<QXmppPubSubManager::ItemsResult<T>> QXmppPubSubManager::requestItems(const QString &jid,
const QString &nodeName)
{
return requestItems<T>(jid, nodeName, {});
}
template<typename T>
QXmppTask<QXmppPubSubManager::ItemsResult<T>> QXmppPubSubManager::requestItems(const QString &jid,
const QString &nodeName,
const QStringList &itemIds)
{
using namespace QXmpp::Private;
return chainIq(client()->sendIq(requestItemsIq(jid, nodeName, itemIds)), this,
[](PubSubIq<T> &&iq) -> ItemsResult<T> {
return Items<T> {
iq.items(),
iq.itemsContinuation(),
};
});
}
template<typename T>
QXmppTask<QXmppPubSubManager::PublishItemResult> QXmppPubSubManager::publishItem(const QString &jid,
const QString &nodeName,
const T &item)
{
QXmpp::Private::PubSubIq<T> request;
request.setTo(jid);
request.setItems({ item });
request.setQueryNode(nodeName);
return publishItem(std::move(request));
}
template<typename T>
QXmppTask<QXmppPubSubManager::PublishItemResult> QXmppPubSubManager::publishItem(const QString &jid,
const QString &nodeName,
const T &item,
const QXmppPubSubPublishOptions &publishOptions)
{
QXmpp::Private::PubSubIq<T> request;
request.setTo(jid);
request.setItems({ item });
request.setQueryNode(nodeName);
request.setDataForm(publishOptions.toDataForm());
return publishItem(std::move(request));
}
template<typename T>
QXmppTask<QXmppPubSubManager::PublishItemsResult> QXmppPubSubManager::publishItems(const QString &jid,
const QString &nodeName,
const QVector<T> &items)
{
QXmpp::Private::PubSubIq<T> request;
request.setTo(jid);
request.setItems(items);
request.setQueryNode(nodeName);
return publishItems(std::move(request));
}
template<typename T>
QXmppTask<QXmppPubSubManager::PublishItemsResult> QXmppPubSubManager::publishItems(const QString &jid,
const QString &nodeName,
const QVector<T> &items,
const QXmppPubSubPublishOptions &publishOptions)
{
QXmpp::Private::PubSubIq<T> request;
request.setTo(jid);
request.setItems(items);
request.setQueryNode(nodeName);
request.setDataForm(publishOptions.toDataForm());
return publishItems(std::move(request));
}
template<typename T>
QXmppTask<QXmppPubSubManager::PublishItemResult> QXmppPubSubManager::publishOwnPepItem(const QString &nodeName, const T &item, const QXmppPubSubPublishOptions &publishOptions)
{
return publishItem(client()->configuration().jidBare(), nodeName, item, publishOptions);
}
template<typename T>
QXmppTask<QXmppPubSubManager::PublishItemResult> QXmppPubSubManager::publishOwnPepItem(const QString &nodeName, const T &item)
{
return publishItem(client()->configuration().jidBare(), nodeName, item);
}
template<typename T>
QXmppTask<QXmppPubSubManager::PublishItemsResult> QXmppPubSubManager::publishOwnPepItems(const QString &nodeName, const QVector<T> &items, const QXmppPubSubPublishOptions &publishOptions)
{
return publishItems(client()->configuration().jidBare(), nodeName, items, publishOptions);
}
template<typename T>
QXmppTask<QXmppPubSubManager::PublishItemsResult> QXmppPubSubManager::publishOwnPepItems(const QString &nodeName, const QVector<T> &items)
{
return publishItems(client()->configuration().jidBare(), nodeName, items);
}
#endif // QXMPPPUBSUBMANAGER_H
QXmppClientExtension::discoveryFeatures
virtual QStringList discoveryFeatures() const
Definition QXmppClientExtension.cpp:22
QXmppClientExtension::client
QXmppClient * client() const
Definition QXmppClientExtension.cpp:57
QXmppClientExtension::QXmppClientExtension
QXmppClientExtension()
Definition QXmppClientExtension.cpp:12
QXmppClientExtension::handleStanza
virtual bool handleStanza(const QDomElement &stanza)
You need to implement this method to process incoming XMPP stanzas.
Definition client/compat/removed_api.cpp:44
QXmppDataFormBase::toDataForm
virtual QXmppDataForm toDataForm() const
Definition QXmppDataFormBase.cpp:39
QXmppPubSubManager::deleteOwnPepNode
QXmppTask< Result > deleteOwnPepNode(const QString &nodeName)
Definition QXmppPubSubManager.h:117
QXmppPubSubManager::requestNodes
QXmppTask< NodesResult > requestNodes(const QString &jid)
Definition QXmppPubSubManager.cpp:268
QXmppPubSubManager::requestNodeAffiliations
QXmppTask< AffiliationsResult > requestNodeAffiliations(const QString &jid, const QString &nodeName)
Definition QXmppPubSubManager.cpp:520
QXmppPubSubManager::InstantNodeResult
std::variant< QString, QXmppError > InstantNodeResult
Definition QXmppPubSubManager.h:55
QXmppPubSubManager::requestOwnPepNodes
QXmppTask< NodesResult > requestOwnPepNodes()
Definition QXmppPubSubManager.h:114
QXmppPubSubManager::ServiceType
ServiceType
Definition QXmppPubSubManager.h:28
QXmppPubSubManager::PubSubOrPep
@ PubSubOrPep
PubSub service or PEP service.
Definition QXmppPubSubManager.h:29
QXmppPubSubManager::PubSub
@ PubSub
PubSub service only.
Definition QXmppPubSubManager.h:30
QXmppPubSubManager::Pep
@ Pep
PEP service only.
Definition QXmppPubSubManager.h:31
QXmppPubSubManager::retractItem
auto retractItem(const QString &jid, const QString &nodeName, const QString &itemId, bool notify=false) -> QXmppTask< Result >
Definition QXmppPubSubManager.cpp:430
QXmppPubSubManager::publishItem
QXmppTask< PublishItemResult > publishItem(const QString &jid, const QString &nodeName, const T &item)
Definition QXmppPubSubManager.h:253
QXmppPubSubManager::retractOwnPepItem
QXmppTask< Result > retractOwnPepItem(const QString &nodeName, const QString &itemId, bool notify=false)
Definition QXmppPubSubManager.h:133
QXmppPubSubManager::ItemResult
std::variant< T, QXmppError > ItemResult
Definition QXmppPubSubManager.h:57
QXmppPubSubManager::subscribeToNode
QXmppTask< Result > subscribeToNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid)
Definition QXmppPubSubManager.cpp:726
QXmppPubSubManager::publishOwnPepItem
QXmppTask< PublishItemResult > publishOwnPepItem(const QString &nodeName, const T &item, const QXmppPubSubPublishOptions &publishOptions)
Definition QXmppPubSubManager.h:342
QXmppPubSubManager::cancelOwnPepNodeConfiguration
QXmppTask< Result > cancelOwnPepNodeConfiguration(const QString &nodeName)
Definition QXmppPubSubManager.h:138
QXmppPubSubManager::ItemIdsResult
std::variant< QVector< QString >, QXmppError > ItemIdsResult
Definition QXmppPubSubManager.h:60
QXmppPubSubManager::configureNode
QXmppTask< Result > configureNode(const QString &service, const QString &nodeName, const QXmppPubSubNodeConfig &config)
Definition QXmppPubSubManager.cpp:687
QXmppPubSubManager::configureOwnPepNode
QXmppTask< Result > configureOwnPepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config)
Definition QXmppPubSubManager.h:137
QXmppPubSubManager::PublishItemsResult
std::variant< QVector< QString >, QXmppError > PublishItemsResult
Definition QXmppPubSubManager.h:62
QXmppPubSubManager::createNode
auto createNode(const QString &jid, const QString &nodeName) -> QXmppTask< Result >
Definition QXmppPubSubManager.cpp:299
QXmppPubSubManager::retractOwnPepItem
QXmppTask< Result > retractOwnPepItem(const QString &nodeName, StandardItemId itemId, bool notify=false)
Definition QXmppPubSubManager.h:134
QXmppPubSubManager::Result
std::variant< QXmpp::Success, QXmppError > Result
Definition QXmppPubSubManager.h:52
QXmppPubSubManager::setSubscribeOptions
QXmppTask< Result > setSubscribeOptions(const QString &service, const QString &nodeName, const QXmppPubSubSubscribeOptions &options)
Definition QXmppPubSubManager.cpp:614
QXmppPubSubManager::requestItemIds
QXmppTask< ItemIdsResult > requestItemIds(const QString &serviceJid, const QString &nodeName)
Definition QXmppPubSubManager.cpp:409
QXmppPubSubManager::AffiliationsResult
std::variant< QVector< QXmppPubSubAffiliation >, QXmppError > AffiliationsResult
Definition QXmppPubSubManager.h:64
QXmppPubSubManager::requestAffiliations
QXmppTask< AffiliationsResult > requestAffiliations(const QString &jid)
Definition QXmppPubSubManager.cpp:540
QXmppPubSubManager::QXmppPubSubManager
QXmppPubSubManager()
Definition QXmppPubSubManager.cpp:195
QXmppPubSubManager::cancelNodeConfiguration
QXmppTask< Result > cancelNodeConfiguration(const QString &service, const QString &nodeName)
Definition QXmppPubSubManager.cpp:708
QXmppPubSubManager::PublishItemResult
std::variant< QString, QXmppError > PublishItemResult
Definition QXmppPubSubManager.h:61
QXmppPubSubManager::createInstantNode
auto createInstantNode(const QString &jid) -> QXmppTask< InstantNodeResult >
Definition QXmppPubSubManager.cpp:343
QXmppPubSubManager::requestOwnPepNodeConfiguration
QXmppTask< NodeConfigResult > requestOwnPepNodeConfiguration(const QString &nodeName)
Definition QXmppPubSubManager.h:136
QXmppPubSubManager::SubscriptionsResult
std::variant< QVector< QXmppPubSubSubscription >, QXmppError > SubscriptionsResult
Definition QXmppPubSubManager.h:63
QXmppPubSubManager::deleteNode
auto deleteNode(const QString &jid, const QString &nodeName) -> QXmppTask< Result >
Definition QXmppPubSubManager.cpp:387
QXmppPubSubManager::NodesResult
std::variant< QVector< QString >, QXmppError > NodesResult
Definition QXmppPubSubManager.h:54
QXmppPubSubManager::unsubscribeFromNode
QXmppTask< Result > unsubscribeFromNode(const QString &serviceJid, const QString &nodeName, const QString &subscriberJid)
Definition QXmppPubSubManager.cpp:745
QXmppPubSubManager::ItemsResult
std::variant< Items< T >, QXmppError > ItemsResult
Definition QXmppPubSubManager.h:59
QXmppPubSubManager::standardItemIdToString
static QString standardItemIdToString(StandardItemId itemId)
Definition QXmppPubSubManager.cpp:958
QXmppPubSubManager::createOwnPepNode
QXmppTask< Result > createOwnPepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config)
Definition QXmppPubSubManager.h:116
QXmppPubSubManager::requestSubscriptions
QXmppTask< SubscriptionsResult > requestSubscriptions(const QString &jid)
Definition QXmppPubSubManager.cpp:484
QXmppPubSubManager::FeaturesResult
std::variant< QVector< QString >, InvalidServiceType, QXmppError > FeaturesResult
Definition QXmppPubSubManager.h:53
QXmppPubSubManager::requestItems
QXmppTask< ItemsResult< T > > requestItems(const QString &jid, const QString &nodeName)
Definition QXmppPubSubManager.h:210
QXmppPubSubManager::publishItems
QXmppTask< PublishItemsResult > publishItems(const QString &jid, const QString &nodeName, const QVector< T > &items)
Definition QXmppPubSubManager.h:299
QXmppPubSubManager::purgeItems
auto purgeItems(const QString &jid, const QString &nodeName) -> QXmppTask< Result >
Definition QXmppPubSubManager.cpp:467
QXmppPubSubManager::requestItem
QXmppTask< ItemResult< T > > requestItem(const QString &jid, const QString &nodeName, const QString &itemId)
Definition QXmppPubSubManager.h:170
QXmppPubSubManager::purgeOwnPepItems
QXmppTask< Result > purgeOwnPepItems(const QString &nodeName)
Definition QXmppPubSubManager.h:135
QXmppPubSubManager::requestNodeConfiguration
QXmppTask< NodeConfigResult > requestNodeConfiguration(const QString &service, const QString &nodeName)
Definition QXmppPubSubManager.cpp:654
QXmppPubSubManager::publishOwnPepItems
QXmppTask< PublishItemsResult > publishOwnPepItems(const QString &nodeName, const QVector< T > &items, const QXmppPubSubPublishOptions &publishOptions)
Definition QXmppPubSubManager.h:370
QXmppPubSubManager::StandardItemId
StandardItemId
Definition QXmppPubSubManager.h:37
QXmppPubSubManager::Current
@ Current
Item of a singleton node (i.e., the node's single item).
Definition QXmppPubSubManager.h:38
QXmppPubSubManager::requestOwnPepItem
QXmppTask< ItemResult< T > > requestOwnPepItem(const QString &nodeName, StandardItemId itemId)
Definition QXmppPubSubManager.h:121
QXmppPubSubManager::requestOwnPepItems
QXmppTask< ItemsResult< T > > requestOwnPepItems(const QString &nodeName)
Definition QXmppPubSubManager.h:123
QXmppPubSubManager::requestOwnPepItem
QXmppTask< ItemResult< T > > requestOwnPepItem(const QString &nodeName, const QString &itemId)
Definition QXmppPubSubManager.h:119
QXmppPubSubManager::OptionsResult
std::variant< QXmppPubSubSubscribeOptions, QXmppError > OptionsResult
Definition QXmppPubSubManager.h:65
QXmppPubSubManager::requestOwnPepItemIds
QXmppTask< ItemIdsResult > requestOwnPepItemIds(const QString &nodeName)
Definition QXmppPubSubManager.h:124
QXmppPubSubManager::createOwnPepNode
QXmppTask< Result > createOwnPepNode(const QString &nodeName)
Definition QXmppPubSubManager.h:115
QXmppPubSubManager::NodeConfigResult
std::variant< QXmppPubSubNodeConfig, QXmppError > NodeConfigResult
Definition QXmppPubSubManager.h:66
QXmppPubSubManager::requestSubscribeOptions
QXmppTask< OptionsResult > requestSubscribeOptions(const QString &service, const QString &nodeName)
Definition QXmppPubSubManager.cpp:573
QXmppTask
Definition QXmppTask.h:46
QXmppError
Definition QXmppError.h:17
QXmppPubSubManager::InvalidServiceType
Definition QXmppPubSubManager.h:44