DONT TAKE, BROKEN! first application of delay manager in code, reception of bundles

This commit is contained in:
Blue 2023-03-10 21:43:31 +03:00
parent 5ba97ecc25
commit 927bdf0dab
Signed by: blue
GPG key ID: 9B203B252A63EE38
16 changed files with 261 additions and 139 deletions

View file

@ -1,5 +1,5 @@
set(SOURCE_FILES
delaymanager.cpp
manager.cpp
job.cpp
cardinternal.cpp
infoforuser.cpp
@ -10,7 +10,7 @@ set(SOURCE_FILES
)
set(HEADER_FILES
delaymanager.h
manager.h
job.h
cardinternal.h
infoforuser.h

View file

@ -14,7 +14,9 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "delaymanager.h"
#include "manager.h"
#include <QDebug>
#include "cardinternal.h"
#include "infoforuser.h"
@ -59,6 +61,9 @@ Core::DelayManager::Job::Id Core::DelayManager::Manager::getNextJobId() {
}
void Core::DelayManager::Manager::getInfo(const QString& jid) {
if (jid == ownJid)
return getOwnInfo();
Job* job = nullptr;
#ifdef WITH_OMEMO
std::map<QString, Job::Id>::const_iterator bitr = requestedBundles.find(jid);
@ -91,10 +96,14 @@ void Core::DelayManager::Manager::getVCard(const QString& jid) {
}
void Core::DelayManager::Manager::getOwnVCard() {
if (ownInfoJobId == 0)
if (ownVCardJobId == 0)
scheduleJob(new OwnCardInternal(getNextJobId()));
}
bool Core::DelayManager::Manager::isOwnVCardPending() const {
return ownVCardJobId != 0;
}
Core::DelayManager::Job* Core::DelayManager::Manager::getVCardJob(const QString& jid) {
Job* job = nullptr;
std::map<QString, Job::Id>::const_iterator sitr = scheduledVCards.find(jid);
@ -207,7 +216,7 @@ void Core::DelayManager::Manager::jobIsCanceled(Job* job, bool wasRunning) {
else
scheduledVCards.erase(jb->jid);
emit receivedVCard(jb->jid, Shared::VCard());
emit gotVCard(jb->jid, Shared::VCard());
}
break;
case Job::Type::infoForUser: {
@ -219,7 +228,7 @@ void Core::DelayManager::Manager::jobIsCanceled(Job* job, bool wasRunning) {
else
scheduledVCards.erase(jb->jid);
emit receivedVCard(jb->jid, Shared::VCard());
emit gotVCard(jb->jid, Shared::VCard());
break;
case InfoForUser::Stage::waitingForBundles:
requestedBundles.erase(jb->jid);
@ -227,23 +236,23 @@ void Core::DelayManager::Manager::jobIsCanceled(Job* job, bool wasRunning) {
default:
break;
}
emit receivedInfo(Shared::Info(jb->jid));
emit gotInfo(Shared::Info(jb->jid));
}
break;
case Job::Type::ownInfoForUser: {
OwnInfoForUser* jb = dynamic_cast<OwnInfoForUser*>(job);
if (jb->getStage() == OwnInfoForUser::Stage::waitingForVCard) {
ownVCardJobId = 0;
emit receivedOwnCard(Shared::VCard());
emit gotOwnVCard(Shared::VCard());
}
ownInfoJobId = 0;
emit receivedOwnInfo(Shared::Info (ownJid));
emit gotOwnInfo(Shared::Info (ownJid));
}
break;
case Job::Type::ownCardInternal:
ownVCardJobId = 0;
emit receivedOwnCard(Shared::VCard());
emit gotOwnVCard(Shared::VCard());
break;
}
@ -264,7 +273,8 @@ void Core::DelayManager::Manager::disconnected() {
void Core::DelayManager::Manager::receivedVCard(const QString& jid, const Shared::VCard& card) {
std::map<QString, Job::Id>::const_iterator cardItr = requestedVCards.find(jid);
if (cardItr == requestedVCards.end()) {
throw 8575; //never supposed to happen, the state is not correct;
qDebug() << "received VCard for" << jid << "but it was never requested through manager, ignoring";
return;
}
Job::Id jobId = cardItr->second;
requestedVCards.erase(cardItr);
@ -272,7 +282,7 @@ void Core::DelayManager::Manager::receivedVCard(const QString& jid, const Shared
switch (job->type) {
case Job::Type::cardInternal:
jobIsDone(jobId);
emit receivedCard(jid, card);
emit gotVCard(jid, card);
break;
case Job::Type::infoForUser: {
#ifdef WITH_OMEMO
@ -283,10 +293,10 @@ void Core::DelayManager::Manager::receivedVCard(const QString& jid, const Shared
#else
Shared::Info info(jid);
info.turnIntoContact(card);
emit receivedInfo(info);
emit gotInfo(info);
jobIsDone(jobId);
#endif
emit receivedCard(jid, card);
emit gotVCard(jid, card);
}
break;
default:
@ -294,27 +304,27 @@ void Core::DelayManager::Manager::receivedVCard(const QString& jid, const Shared
}
}
void Core::DelayManager::Manager::ownVCardReceived(const Shared::VCard& card) {
void Core::DelayManager::Manager::receivedOwnVCard(const Shared::VCard& card) {
Job::Id jobId = ownVCardJobId;
ownVCardJobId = 0;
Job* job = runningJobs.at(jobId);
switch (job->type) {
case Job::Type::ownCardInternal:
jobIsDone(jobId);
emit receivedOwnCard(card);
emit gotOwnVCard(card);
break;
case Job::Type::ownInfoForUser: {
#ifdef WITH_OMEMO
OwnInfoForUser* jb = dynamic_cast<OwnInfoForUser*>(job);
jb->receivedVCard(card);
emit requestOwnBundle();
emit requestOwnBundles();
#else
Shared::Info info(ownJid);
info.turnIntoOwnAccount(card);
emit receivedOwnInfo(info);
emit gotOwnInfo(info);
jobIsDone(jobId);
#endif
emit receivedOwnCard(card);
emit gotOwnVCard(card);
}
break;
default:
@ -335,7 +345,7 @@ void Core::DelayManager::Manager::receivedBundles(const QString& jid, const std:
Shared::Info info(jid);
info.turnIntoContact(job->claim(), new std::list<Shared::KeyInfo>(keys));
emit receivedInfo(info);
emit gotInfo(info);
jobIsDone(jobId);
}
@ -347,7 +357,7 @@ void Core::DelayManager::Manager::receivedOwnBundles(const std::list<Shared::Key
Shared::Info info(ownJid);
info.turnIntoOwnAccount(job->claim(), new std::list<Shared::KeyInfo>(keys));
emit receivedOwnInfo(info);
emit gotOwnInfo(info);
jobIsDone(jobId);
}

View file

@ -43,26 +43,29 @@ public:
Manager(const QString& ownJid, Job::Id maxParallelJobs = 5, QObject* parent = nullptr);
~Manager();
void setOwnJid(const QString& jid);
bool isOwnVCardPending() const;
public slots:
void getOwnVCard();
void getOwnInfo();
void getVCard(const QString& jid);
void getInfo(const QString& jid);
void setOwnJid(const QString& jid);
signals:
void requestVCard(const QString& jid);
void requestOwnVCard();
void requestBundles(const QString& jid);
void requestOwnBundle();
void requestOwnBundles();
void receivedCard(const QString& jid, const Shared::VCard& info);
void receivedOwnCard(const Shared::VCard& info);
void receivedInfo(const Shared::Info& info);
void receivedOwnInfo(const Shared::Info& info);
void gotVCard(const QString& jid, const Shared::VCard& info);
void gotOwnVCard(const Shared::VCard& info);
void gotInfo(const Shared::Info& info);
void gotOwnInfo(const Shared::Info& info);
public slots:
void disconnected();
void ownVCardReceived(const Shared::VCard& card);
void receivedOwnVCard(const Shared::VCard& card);
void receivedVCard(const QString& jid, const Shared::VCard& card);
void receivedBundles(const QString& jid, const std::list<Shared::KeyInfo>& keys);
void receivedOwnBundles(const std::list<Shared::KeyInfo>& keys);