keeping up with qxmpp

This commit is contained in:
Blue 2023-01-29 20:26:54 +03:00
parent 73d83f55af
commit 3c6b611a41
Signed by: blue
GPG key ID: 9B203B252A63EE38
10 changed files with 146 additions and 153 deletions

View file

@ -16,6 +16,7 @@
#include "trusthandler.h"
#include "core/account.h"
#include "core/adapterfunctions.h"
using namespace Core;
@ -75,37 +76,25 @@ Core::TrustHandler::KeyCache * Core::TrustHandler::createNewCache(const QString&
return cache;
}
QFuture<void> Core::TrustHandler::emptyVoidFuture() {
QFutureInterface<QXmppOmemoStorage::OmemoData> result(QFutureInterfaceBase::Started);
result.reportFinished();
return result.future();
}
QFuture<void> Core::TrustHandler::resetAll(const QString& encryption) {
QXmppTask<void> Core::TrustHandler::resetAll(const QString& encryption) {
securityPolicies->removeRecord(encryption);
ownKeys->removeRecord(encryption);
getCache(encryption)->drop();
return emptyVoidFuture();
return Core::makeReadyTask();
}
QFuture<QXmpp::TrustLevel> Core::TrustHandler::trustLevel(
QXmppTask<QXmpp::TrustLevel> Core::TrustHandler::trustLevel(
const QString& encryption,
const QString& keyOwnerJid,
const QByteArray& keyId)
{
Keys map = getCache(encryption)->getRecord(keyOwnerJid);
Shared::TrustLevel level = map.at(keyId);
QFutureInterface<QXmpp::TrustLevel> result(QFutureInterfaceBase::Started);
result.reportResult(convert(level));
result.reportFinished();
return result.future();
return Core::makeReadyTask(std::move(convert(level)));
}
QFuture<QHash<QString, QMultiHash<QString, QByteArray>>> Core::TrustHandler::setTrustLevel(
QXmppTask<QHash<QString, QMultiHash<QString, QByteArray>>> Core::TrustHandler::setTrustLevel(
const QString& encryption,
const QList<QString>& keyOwnerJids,
QXmpp::TrustLevel oldTrustLevel,
@ -130,14 +119,10 @@ QFuture<QHash<QString, QMultiHash<QString, QByteArray>>> Core::TrustHandler::set
cache->changeRecord(keyOwnerJid, map);
}
}
QFutureInterface<QHash<QString, QMultiHash<QString, QByteArray>>> result(QFutureInterfaceBase::Started);
result.reportResult(modifiedKeys);
result.reportFinished();
return result.future();
return Core::makeReadyTask(std::move(modifiedKeys));
}
QFuture<QHash<QString, QMultiHash<QString, QByteArray>>> Core::TrustHandler::setTrustLevel(
QXmppTask<QHash<QString, QMultiHash<QString, QByteArray>>> Core::TrustHandler::setTrustLevel(
const QString& encryption,
const QMultiHash<QString, QByteArray>& keyIds,
QXmpp::TrustLevel trustLevel)
@ -160,14 +145,10 @@ QFuture<QHash<QString, QMultiHash<QString, QByteArray>>> Core::TrustHandler::set
cache->changeRecord(keyOwnerJid, map);
}
}
QFutureInterface<QHash<QString, QMultiHash<QString, QByteArray>>> result(QFutureInterfaceBase::Started);
result.reportResult(modifiedKeys);
result.reportFinished();
return result.future();
return Core::makeReadyTask(std::move(modifiedKeys));
}
QFuture<bool> TrustHandler::hasKey(const QString& encryption,
QXmppTask<bool> TrustHandler::hasKey(const QString& encryption,
const QString& keyOwnerJid,
QXmpp::TrustLevels trustLevels)
{
@ -182,14 +163,10 @@ QFuture<bool> TrustHandler::hasKey(const QString& encryption,
}
}
} catch (const DataBase::NotFound& e) {}
QFutureInterface<bool> result(QFutureInterfaceBase::Started);
result.reportResult(found);
result.reportFinished();
return result.future();
return Core::makeReadyTask(std::move(found));
}
QFuture<QHash<QString, QHash<QByteArray, QXmpp::TrustLevel>>> TrustHandler::keys(
QXmppTask<QHash<QString, QHash<QByteArray, QXmpp::TrustLevel>>> TrustHandler::keys(
const QString& encryption,
const QList<QString>& keyOwnerJids,
QXmpp::TrustLevels trustLevels)
@ -209,14 +186,10 @@ QFuture<QHash<QString, QHash<QByteArray, QXmpp::TrustLevel>>> TrustHandler::keys
}
} catch (const DataBase::NotFound& e) {}
}
QFutureInterface<HSHBTL> result(QFutureInterfaceBase::Started);
result.reportResult(res);
result.reportFinished();
return result.future();
return Core::makeReadyTask(std::move(res));
}
QFuture<QHash<QXmpp::TrustLevel, QMultiHash<QString, QByteArray>>> TrustHandler::keys(
QXmppTask<QHash<QXmpp::TrustLevel, QMultiHash<QString, QByteArray>>> TrustHandler::keys(
const QString& encryption,
QXmpp::TrustLevels trustLevels)
{
@ -231,24 +204,20 @@ QFuture<QHash<QXmpp::TrustLevel, QMultiHash<QString, QByteArray>>> TrustHandler:
}
}
}
QFutureInterface<QHash<TL, MultySB>> result(QFutureInterfaceBase::Started);
result.reportResult(res);
result.reportFinished();
return result.future();
return Core::makeReadyTask(std::move(res));
}
QFuture<void> TrustHandler::removeKeys(const QString& encryption) {
QXmppTask<void> TrustHandler::removeKeys(const QString& encryption) {
getCache(encryption)->drop();
return emptyVoidFuture();
return Core::makeReadyTask();
}
QFuture<void> TrustHandler::removeKeys(const QString& encryption, const QString& keyOwnerJid) {
QXmppTask<void> TrustHandler::removeKeys(const QString& encryption, const QString& keyOwnerJid) {
getCache(encryption)->removeRecord(keyOwnerJid);
return emptyVoidFuture();
return Core::makeReadyTask();
}
QFuture<void> TrustHandler::removeKeys(const QString& encryption, const QList<QByteArray>& keyIds) {
QXmppTask<void> TrustHandler::removeKeys(const QString& encryption, const QList<QByteArray>& keyIds) {
std::set<QByteArray> set;
for (const QByteArray& keyId : keyIds) {
set.insert(keyId);
@ -278,10 +247,10 @@ QFuture<void> TrustHandler::removeKeys(const QString& encryption, const QList<QB
cache->replaceAll(data);
}
return emptyVoidFuture();
return Core::makeReadyTask();
}
QFuture<void> TrustHandler::addKeys(
QXmppTask<void> TrustHandler::addKeys(
const QString& encryption,
const QString& keyOwnerJid,
const QList<QByteArray>& keyIds,
@ -308,61 +277,53 @@ QFuture<void> TrustHandler::addKeys(
cache->addRecord(keyOwnerJid, data);
}
return emptyVoidFuture();
return Core::makeReadyTask();
}
QFuture<QByteArray> TrustHandler::ownKey(const QString& encryption) {
QXmppTask<QByteArray> TrustHandler::ownKey(const QString& encryption) {
QByteArray res;
try {
res = ownKeys->getRecord(encryption);
} catch (const DataBase::NotFound& e) {}
QFutureInterface<QByteArray> result(QFutureInterfaceBase::Started);
result.reportResult(res);
result.reportFinished();
return result.future();
return Core::makeReadyTask(std::move(res));
}
QFuture<void> TrustHandler::resetOwnKey(const QString& encryption) {
QXmppTask<void> TrustHandler::resetOwnKey(const QString& encryption) {
try {
ownKeys->removeRecord(encryption);
} catch (const DataBase::NotFound& e) {}
return emptyVoidFuture();
return Core::makeReadyTask();
}
QFuture<void> TrustHandler::setOwnKey(const QString& encryption, const QByteArray& keyId) {
QXmppTask<void> TrustHandler::setOwnKey(const QString& encryption, const QByteArray& keyId) {
ownKeys->forceRecord(encryption, keyId);
return emptyVoidFuture();
return Core::makeReadyTask();
}
QFuture<QXmpp::TrustSecurityPolicy> TrustHandler::securityPolicy(const QString& encryption) {
QXmppTask<QXmpp::TrustSecurityPolicy> TrustHandler::securityPolicy(const QString& encryption) {
QXmpp::TrustSecurityPolicy res;
try {
res = static_cast<QXmpp::TrustSecurityPolicy>(securityPolicies->getRecord(encryption));
} catch (const DataBase::NotFound& e) {}
QFutureInterface<QXmpp::TrustSecurityPolicy> result(QFutureInterfaceBase::Started);
result.reportResult(res);
result.reportFinished();
return result.future();
return Core::makeReadyTask(std::move(res));
}
QFuture<void> TrustHandler::resetSecurityPolicy(const QString& encryption) {
QXmppTask<void> TrustHandler::resetSecurityPolicy(const QString& encryption) {
try {
securityPolicies->removeRecord(encryption);
} catch (const DataBase::NotFound& e) {}
return emptyVoidFuture();
return Core::makeReadyTask();
}
QFuture<void> TrustHandler::setSecurityPolicy(
QXmppTask<void> TrustHandler::setSecurityPolicy(
const QString& encryption,
QXmpp::TrustSecurityPolicy securityPolicy)
{
uint8_t pol = securityPolicy;
securityPolicies->forceRecord(encryption, pol);
return emptyVoidFuture();
return Core::makeReadyTask();
}
Shared::TrustLevel Core::TrustHandler::convert(Core::TrustHandler::TL level)