refs #568, allow to read incremental data based on timestamp

* signatures with QDateTime
* flags
This commit is contained in:
Klaus Basan
2016-01-08 00:35:52 +01:00
parent 46e7d42e8c
commit 46336e9cce
14 changed files with 190 additions and 46 deletions

View File

@@ -11,6 +11,7 @@
#include "blackmisc/dbus.h"
#include <QtDBus/QDBusMetaType>
#include <QStringList>
#include "blackmisc/verify.h"
namespace BlackMisc
{
@@ -33,7 +34,7 @@ namespace BlackMisc
case AllIcaoAndCountries: return "All ICAO + country";
case AllEntities: return "All";
default:
Q_ASSERT_X(false, Q_FUNC_INFO, "wrong flags");
BLACK_VERIFY_X(false, Q_FUNC_INFO, "wrong flags");
return "wrong flags";
}
}
@@ -58,10 +59,11 @@ namespace BlackMisc
switch (flag)
{
case ReadFinished: return "finished";
case ReadFinishedRestricted: return "finished (restricted)";
case ReadFailed: return "failed";
case StartRead: return "read started";
default:
Q_ASSERT_X(false, Q_FUNC_INFO, "wrong flags");
BLACK_VERIFY_X(false, Q_FUNC_INFO, "wrong flags");
return "wrong flags";
}
}
@@ -71,18 +73,22 @@ namespace BlackMisc
switch (state)
{
case ReadFinished:
case ReadFinishedRestricted:
case StartRead:
default:
return CStatusMessage::SeverityInfo;
case ReadFailed:
return CStatusMessage::SeverityWarning;
default:
Q_ASSERT_X(false, Q_FUNC_INFO, "Missing state");
return CStatusMessage::SeverityInfo;
}
}
bool CEntityFlags::isWarningOrAbove(CEntityFlags::ReadState state)
{
CStatusMessage::StatusSeverity s = flagToSeverity(state);
switch (s) {
switch (s)
{
case CStatusMessage::SeverityError:
case CStatusMessage::SeverityWarning:
return true;

View File

@@ -49,9 +49,10 @@ namespace BlackMisc
//! State of operation
enum ReadState
{
StartRead, ///< reading has been started
ReadFinished, ///< reading done
ReadFailed ///< reading failed
StartRead, ///< reading has been started
ReadFinished, ///< reading done
ReadFinishedRestricted, ///< finished a timestamp restricted read
ReadFailed ///< reading failed
};
//! Convert to string

View File

@@ -129,6 +129,20 @@ namespace BlackMisc
return this->m_webDataReaderProvider->getModelsCount();
}
QList<int> CWebDataServicesAware::getModelDbKeys() const
{
Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider");
if (!hasProvider()) { return QList<int>(); }
return this->m_webDataReaderProvider->getModelDbKeys();
}
QStringList CWebDataServicesAware::getModelStrings() const
{
Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider");
if (!hasProvider()) { return QStringList(); }
return this->m_webDataReaderProvider->getModelStrings();
}
CAircraftModel CWebDataServicesAware::getModelForModelString(const QString &modelString) const
{
Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider");
@@ -306,11 +320,11 @@ namespace BlackMisc
}
}
CEntityFlags::Entity CWebDataServicesAware::triggerRead(CEntityFlags::Entity whatToRead)
CEntityFlags::Entity CWebDataServicesAware::triggerRead(CEntityFlags::Entity whatToRead, const QDateTime &newerThan)
{
Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider");
if (!hasProvider()) { return CEntityFlags::NoEntity; }
return this->m_webDataReaderProvider->triggerRead(whatToRead);
return this->m_webDataReaderProvider->triggerRead(whatToRead, newerThan);
}
bool CWebDataServicesAware::canConnectSwiftDb() const

View File

@@ -112,6 +112,14 @@ namespace BlackMisc
//! \threadsafe
virtual int getModelsCount() const = 0;
//! Model keys
//! \threadsafe
virtual QList<int> getModelDbKeys() const = 0;
//! Model strings
//! \threadsafe
virtual QStringList getModelStrings() const = 0;
//! Models for combined code and aircraft designator
//! \threadsafe
virtual BlackMisc::Simulation::CAircraftModelList getModelsForAircraftDesignatorAndLiveryCombinedCode(const QString &aircraftDesignator, const QString &combinedCode) const = 0;
@@ -204,7 +212,7 @@ namespace BlackMisc
std::function<void(const BlackMisc::Simulation::CAircraftModelList &, const BlackMisc::Simulation::CAircraftModelList &, const BlackMisc::CStatusMessageList &)> dataPublished) = 0;
//! Trigger read of new data
virtual BlackMisc::Network::CEntityFlags::Entity triggerRead(BlackMisc::Network::CEntityFlags::Entity whatToRead) = 0;
virtual BlackMisc::Network::CEntityFlags::Entity triggerRead(BlackMisc::Network::CEntityFlags::Entity whatToRead, const QDateTime &dateTime = QDateTime()) = 0;
//! Can connect to swift DB?
virtual bool canConnectSwiftDb() const = 0;
@@ -276,6 +284,12 @@ namespace BlackMisc
//! \copydoc IWebDataServicesProvider::getModelsCount
int getModelsCount() const;
//! \copydoc IWebDataServicesProvider::getModelDbKeys
QList<int> getModelDbKeys() const;
//! \copydoc IWebDataServicesProvider::getModelStrings
QStringList getModelStrings() const;
//! \copydoc IWebDataServicesProvider::getModelsForAircraftDesignatorAndLiveryCombinedCode
BlackMisc::Simulation::CAircraftModelList getModelsForAircraftDesignatorAndLiveryCombinedCode(const QString &aircraftDesignator, const QString &combinedCode) const;
@@ -353,7 +367,7 @@ namespace BlackMisc
std::function<void(const BlackMisc::Simulation::CAircraftModelList &, const BlackMisc::Simulation::CAircraftModelList &, const BlackMisc::CStatusMessageList &)> dataPublished);
//! \copydoc IWebDataServicesProvider::triggerRead
BlackMisc::Network::CEntityFlags::Entity triggerRead(BlackMisc::Network::CEntityFlags::Entity whatToRead);
BlackMisc::Network::CEntityFlags::Entity triggerRead(BlackMisc::Network::CEntityFlags::Entity whatToRead, const QDateTime &newerThan);
//! \copydoc IWebDataServicesProvider::canConnectSwiftDb
bool canConnectSwiftDb() const;