DONT TAKE, BROKEN! first application of delay manager in code, reception of bundles
This commit is contained in:
parent
5ba97ecc25
commit
927bdf0dab
16 changed files with 261 additions and 139 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
Loading…
Add table
Add a link
Reference in a new issue