Ref T224, info object reader fixes

* caches need to be obtained from the respective readers
* BLACK_VERIFY to detect problems
* fixed masking which was wrong (did mask by info object)
This commit is contained in:
Klaus Basan
2018-01-14 05:21:40 +01:00
parent 0fa4bf1e9d
commit 2a2a5e1349
2 changed files with 39 additions and 10 deletions

View File

@@ -360,7 +360,7 @@ namespace BlackCore
{ {
Q_ASSERT_X(CEntityFlags::isSingleEntity(entity), Q_FUNC_INFO, "need single entity"); Q_ASSERT_X(CEntityFlags::isSingleEntity(entity), Q_FUNC_INFO, "need single entity");
static const QDateTime e; static const QDateTime e;
const CDbInfoList il(getSharedInfoObjects()); const CDbInfoList il(this->getSharedInfoObjects());
if (il.isEmpty() || entity == CEntityFlags::NoEntity) { return e; } if (il.isEmpty() || entity == CEntityFlags::NoEntity) { return e; }
const CDbInfo info = il.findFirstByEntityOrDefault(entity); const CDbInfo info = il.findFirstByEntityOrDefault(entity);
@@ -380,7 +380,7 @@ namespace BlackCore
{ {
if (!this->isInternetAccessible(QString("No network/internet access, will not read shared file headers for %1").arg(CEntityFlags::flagToString(entities)))) { return false; } if (!this->isInternetAccessible(QString("No network/internet access, will not read shared file headers for %1").arg(CEntityFlags::flagToString(entities)))) { return false; }
CEntityFlags::Entity allEntities(this->maskBySupportedEntities(entities)); CEntityFlags::Entity allEntities = entities & CEntityFlags::AllDbEntitiesNoInfoObjects;
CEntityFlags::Entity currentEntity = CEntityFlags::iterateDbEntities(allEntities); CEntityFlags::Entity currentEntity = CEntityFlags::iterateDbEntities(allEntities);
const CUrl urlSharedDbdata = CDatabaseReader::getWorkingSharedDbdataDirectoryUrl(); const CUrl urlSharedDbdata = CDatabaseReader::getWorkingSharedDbdataDirectoryUrl();
if (urlSharedDbdata.isEmpty()) if (urlSharedDbdata.isEmpty())
@@ -430,7 +430,7 @@ namespace BlackCore
CEntityFlags::Entity CDatabaseReader::getEntitesWithNewerHeaderTimestamp(CEntityFlags::Entity entities) const CEntityFlags::Entity CDatabaseReader::getEntitesWithNewerHeaderTimestamp(CEntityFlags::Entity entities) const
{ {
entities = this->maskBySupportedEntities(entities); // handled by this reader entities &= CEntityFlags::AllDbEntitiesNoInfoObjects;
CEntityFlags::Entity currentEntity = CEntityFlags::iterateDbEntities(entities); CEntityFlags::Entity currentEntity = CEntityFlags::iterateDbEntities(entities);
CEntityFlags::Entity newerEntities = CEntityFlags::NoEntity; CEntityFlags::Entity newerEntities = CEntityFlags::NoEntity;
while (currentEntity != CEntityFlags::NoEntity) while (currentEntity != CEntityFlags::NoEntity)
@@ -446,7 +446,7 @@ namespace BlackCore
CEntityFlags::Entity CDatabaseReader::getEntitesWithNewerSharedInfoObject(CEntityFlags::Entity entities) const CEntityFlags::Entity CDatabaseReader::getEntitesWithNewerSharedInfoObject(CEntityFlags::Entity entities) const
{ {
entities = this->maskBySupportedEntities(entities); // handled by this reader entities &= CEntityFlags::AllDbEntitiesNoInfoObjects;
CEntityFlags::Entity currentEntity = CEntityFlags::iterateDbEntities(entities); CEntityFlags::Entity currentEntity = CEntityFlags::iterateDbEntities(entities);
CEntityFlags::Entity newerEntities = CEntityFlags::NoEntity; CEntityFlags::Entity newerEntities = CEntityFlags::NoEntity;
while (currentEntity != CEntityFlags::NoEntity) while (currentEntity != CEntityFlags::NoEntity)
@@ -569,12 +569,12 @@ namespace BlackCore
CEntityFlags::Entity CDatabaseReader::maskBySupportedEntities(CEntityFlags::Entity entities) const CEntityFlags::Entity CDatabaseReader::maskBySupportedEntities(CEntityFlags::Entity entities) const
{ {
return entities & getSupportedEntities(); return entities & this->getSupportedEntities();
} }
bool CDatabaseReader::supportsAnyOfEntities(CEntityFlags::Entity entities) const bool CDatabaseReader::supportsAnyOfEntities(CEntityFlags::Entity entities) const
{ {
return static_cast<int>(maskBySupportedEntities(entities)) > 0; return static_cast<int>(this->maskBySupportedEntities(entities)) > 0;
} }
bool CDatabaseReader::hasCacheTimestampNewerThan(CEntityFlags::Entity entity, const QDateTime &threshold) const bool CDatabaseReader::hasCacheTimestampNewerThan(CEntityFlags::Entity entity, const QDateTime &threshold) const

View File

@@ -8,9 +8,11 @@
*/ */
#include "blackcore/application.h" #include "blackcore/application.h"
#include "blackcore/webdataservices.h"
#include "blackmisc/sequence.h" #include "blackmisc/sequence.h"
#include "blackmisc/logmessage.h" #include "blackmisc/logmessage.h"
#include "blackmisc/network/networkutils.h" #include "blackmisc/network/networkutils.h"
#include "blackmisc/verify.h"
#include "infodatareader.h" #include "infodatareader.h"
#include <QTimer> #include <QTimer>
@@ -52,43 +54,70 @@ namespace BlackCore
void CInfoDataReader::synchronizeCaches(CEntityFlags::Entity entities) void CInfoDataReader::synchronizeCaches(CEntityFlags::Entity entities)
{ {
// no caching used here // no caching used here
BLACK_VERIFY_X(false, Q_FUNC_INFO, "Using this for CInfoDataReader makes no sense");
Q_UNUSED(entities); Q_UNUSED(entities);
} }
void CInfoDataReader::admitCaches(CEntityFlags::Entity entities) void CInfoDataReader::admitCaches(CEntityFlags::Entity entities)
{ {
// no caching used here // no caching used here
BLACK_VERIFY_X(false, Q_FUNC_INFO, "Using this for CInfoDataReader makes no sense");
Q_UNUSED(entities); Q_UNUSED(entities);
} }
void CInfoDataReader::invalidateCaches(CEntityFlags::Entity entities) void CInfoDataReader::invalidateCaches(CEntityFlags::Entity entities)
{ {
// no caching used here // no caching used here
BLACK_VERIFY_X(false, Q_FUNC_INFO, "Using this for CInfoDataReader makes no sense");
Q_UNUSED(entities); Q_UNUSED(entities);
} }
QDateTime CInfoDataReader::getCacheTimestamp(CEntityFlags::Entity entity) const QDateTime CInfoDataReader::getCacheTimestamp(CEntityFlags::Entity entity) const
{ {
// no caching used here // no own caching used here
Q_UNUSED(entity); Q_UNUSED(entity);
return QDateTime(); Q_ASSERT_X(CEntityFlags::isSingleEntity(entity), Q_FUNC_INFO, "Need single entity");
Q_ASSERT_X(sApp, Q_FUNC_INFO, "Need sApp");
if (entity == CEntityFlags::DbInfoObjectEntity || entity == CEntityFlags::SharedInfoObjectEntity)
{
BLACK_VERIFY_X(false, Q_FUNC_INFO, "Using this for CInfoDataReader makes no sense");
return QDateTime();
}
// Forward to web data services so I get cache data from other readers
//! \fixme bit of a hack to use web data services here
return sApp->getWebDataServices()->getCacheTimestamp(entity);
} }
int CInfoDataReader::getCacheCount(CEntityFlags::Entity entity) const int CInfoDataReader::getCacheCount(CEntityFlags::Entity entity) const
{ {
// no caching used here // no own caching used here
Q_UNUSED(entity); Q_UNUSED(entity);
return 0; Q_ASSERT_X(CEntityFlags::isSingleEntity(entity), Q_FUNC_INFO, "Need single entity");
Q_ASSERT_X(sApp, Q_FUNC_INFO, "Need sApp");
if (entity == CEntityFlags::DbInfoObjectEntity || entity == CEntityFlags::SharedInfoObjectEntity)
{
BLACK_VERIFY_X(false, Q_FUNC_INFO, "Using this for CInfoDataReader makes no sense");
return 0;
}
// Forward to web data services so I get cache data from other readers
//! \fixme bit of a hack to use web data services here
return sApp->getWebDataServices()->getCacheCount(entity);
} }
CEntityFlags::Entity CInfoDataReader::getEntitiesWithCacheCount() const CEntityFlags::Entity CInfoDataReader::getEntitiesWithCacheCount() const
{ {
BLACK_VERIFY_X(false, Q_FUNC_INFO, "Using this for CInfoDataReader makes no sense");
return CEntityFlags::NoEntity; return CEntityFlags::NoEntity;
} }
CEntityFlags::Entity CInfoDataReader::getEntitiesWithCacheTimestampNewerThan(const QDateTime &threshold) const CEntityFlags::Entity CInfoDataReader::getEntitiesWithCacheTimestampNewerThan(const QDateTime &threshold) const
{ {
Q_UNUSED(threshold); Q_UNUSED(threshold);
BLACK_VERIFY_X(false, Q_FUNC_INFO, "Using this for CInfoDataReader makes no sense");
return CEntityFlags::NoEntity; return CEntityFlags::NoEntity;
} }