|
swift
|
Support for threaded based reading and parsing tasks such as data files via http, or file system and parsing (such as FSX models) Usage: Create a subclass, call start() and dispatch a call to the thread of the reader. See protected functions for helpers (e.g. doWorkCheck() to check if the work should be continued) More...
Public Member Functions | |
| ~CThreadedReader ()=default | |
| Destructor. | |
| CThreadedReader (const CThreadedReader &)=delete | |
| Copy constructor. | |
| CThreadedReader & | operator= (const CThreadedReader &)=delete |
| Copy assignment. | |
| CThreadedReader (CThreadedReader &&)=delete | |
| Move constructor. | |
| CThreadedReader & | operator= (CThreadedReader &&)=delete |
| Move assignment. | |
| QDateTime | getUpdateTimestamp () const |
| Thread safe, get update timestamp. More... | |
| void | setUpdateTimestamp (const QDateTime &updateTimestamp=QDateTime::currentDateTimeUtc()) |
| Thread safe, set update timestamp. More... | |
| bool | isMarkedAsFailed () const |
| Is marked as read failed. More... | |
| void | setMarkedAsFailed (bool failed) |
| Set marker for read failed. More... | |
| swift::misc::network::CUrlLogList | getReadLog () const |
| Get the read log. More... | |
| void | markAsUsedInUnitTest () |
| Used in unit test. More... | |
| swift::misc::network::CUrlLogList | getUrlLogList () const |
| Get the URL log list. More... | |
| QPair< qint64, qint64 > | getNetworkReplyBytes () const |
| Max./current bytes. | |
Public Member Functions inherited from swift::misc::CContinuousWorker | |
| CContinuousWorker (QObject *owner, const QString &name) | |
| Constructor. More... | |
| void | start (QThread::Priority priority=QThread::InheritPriority) |
| Starts a thread and moves the worker into it. | |
| void | quit () noexcept final |
| Stops the thread the next time around its event loop. The thread and the worker will then be deleted. More... | |
| void | quitAndWait () noexcept final |
| Calls quit() and blocks until the thread is finished. More... | |
| bool | isEnabled () const |
| Enabled (running)? More... | |
| const QString & | getName () |
| Name of the worker. | |
| const QObject * | owner () const |
| Owner of the worker. | |
Public Member Functions inherited from swift::misc::CWorkerBase | |
| ~CWorkerBase () | |
| Destructor. | |
| CWorkerBase (const CWorkerBase &)=delete | |
| Copy constructor. | |
| CWorkerBase & | operator= (const CWorkerBase &)=delete |
| Copy assignment. | |
| CWorkerBase (CWorkerBase &&)=delete | |
| Move constructor. | |
| CWorkerBase & | operator= (CWorkerBase &&)=delete |
| Move assignment. | |
| template<typename T , typename F > | |
| void | then (T *context, F functor) |
| Connects to a functor or method which will be called when the task is finished. More... | |
| template<typename F > | |
| void | then (F functor) |
| Connects to a functor which will be called when the task is finished. More... | |
| bool | isFinished () const |
| Returns true if the task has finished. More... | |
| template<typename F > | |
| void | doIfFinished (F functor) const |
| Executes some code (in the caller's thread) if the task has finished. More... | |
| template<typename F > | |
| void | doIfNotFinished (F functor) const |
| Executes some code (in the caller's thread) if the task has not finished. More... | |
| template<typename F1 , typename F2 > | |
| void | doIfFinishedElse (F1 ifFunctor, F2 elseFunctor) const |
| Executes some code (in the caller's thread) if the task has finished and some different code if it has not finished. More... | |
| void | waitForFinished () noexcept |
| Blocks until the task is finished. More... | |
| void | abandon () noexcept |
| Notify the task that its result is no longer needed, so it can finish early. More... | |
| void | abandonAndWait () noexcept |
| Convenience to call abandon() followed by waitForFinished(). | |
Public Member Functions inherited from QObject | |
| QBindable< QString > | bindableObjectName () |
| QObject (QObject *parent) | |
| QT_NO_CONTEXTLESS_CONNECT QT_NO_CONTEXTLESS_CONNECT | |
| QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT | |
| Q_CLASSINFO (Name, Value) | |
| Q_EMIT Q_EMIT | |
| Q_ENUM (...) | |
| Q_ENUMS (...) | |
| Q_ENUM_NS (...) | |
| Q_FLAG (...) | |
| Q_FLAGS (...) | |
| Q_FLAG_NS (...) | |
| Q_GADGET Q_GADGET | |
| Q_GADGET_EXPORT (EXPORT_MACRO) | |
| Q_INTERFACES (...) | |
| Q_INVOKABLE Q_INVOKABLE | |
| Q_MOC_INCLUDE Q_MOC_INCLUDE | |
| Q_NAMESPACE Q_NAMESPACE | |
| Q_NAMESPACE_EXPORT (EXPORT_MACRO) | |
| Q_OBJECT Q_OBJECT | |
| Q_PROPERTY (...) | |
| Q_REVISION Q_REVISION | |
| Q_SET_OBJECT_NAME (Object) | |
| Q_SIGNAL Q_SIGNAL | |
| Q_SIGNALS Q_SIGNALS | |
| Q_SLOT Q_SLOT | |
| Q_SLOTS Q_SLOTS | |
| T | qobject_cast (QObject *object) |
| T | qobject_cast (const QObject *object) |
| bool | blockSignals (bool block) |
| virtual bool | event (QEvent *e) |
| virtual bool | eventFilter (QObject *watched, QEvent *event) |
| bool | moveToThread (QThread *targetThread) |
| bool | setProperty (const char *name, QVariant &&value) |
| bool | setProperty (const char *name, const QVariant &value) |
| int | startTimer (int interval, Qt::TimerType timerType) |
| int | startTimer (std::chrono::nanoseconds interval, Qt::TimerType timerType) |
| void | deleteLater () |
| void | destroyed (QObject *obj) |
| void | installEventFilter (QObject *filterObj) |
| void | killTimer (Qt::TimerId id) |
| void | killTimer (int id) |
| void | objectNameChanged (const QString &objectName) |
| void | removeEventFilter (QObject *obj) |
| void | setObjectName (QAnyStringView name) |
| void | setObjectName (const QString &name) |
| void | setParent (QObject *parent) |
| QList< QByteArray > | dynamicPropertyNames () const const |
| QList< T > | findChildren (QAnyStringView name, Qt::FindChildOptions options) const const |
| QList< T > | findChildren (Qt::FindChildOptions options) const const |
| QList< T > | findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const |
| QMetaObject::Connection | connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const |
| QObject * | parent () const const |
| QString | objectName () const const |
| QThread * | thread () const const |
| QVariant | property (const char *name) const const |
| T | findChild (QAnyStringView name, Qt::FindChildOptions options) const const |
| T | findChild (Qt::FindChildOptions options) const const |
| bool | disconnect (const QObject *receiver, const char *method) const const |
| bool | disconnect (const char *signal, const QObject *receiver, const char *method) const const |
| bool | inherits (const char *className) const const |
| bool | isQuickItemType () const const |
| bool | isWidgetType () const const |
| bool | isWindowType () const const |
| bool | signalsBlocked () const const |
| virtual const QMetaObject * | metaObject () const const |
| const QObjectList & | children () const const |
| void | dumpObjectInfo () const const |
| void | dumpObjectTree () const const |
Static Public Member Functions | |
| static const QStringList & | getLogCategories () |
| Log categories. | |
Static Public Member Functions inherited from swift::misc::CWorkerBase | |
| static const QStringList & | getLogCategories () |
| Log categories. | |
| static const QSet< CWorkerBase * > & | allWorkers () |
| All workers currently existing. | |
Static Public Member Functions inherited from QObject | |
| QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, Functor functor) |
| QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type) |
| QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type) |
| QMetaObject::Connection | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type) |
| QMetaObject::Connection | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type) |
| QString | tr (const char *sourceText, const char *disambiguation, int n) |
| bool | disconnect (const QMetaObject::Connection &connection) |
| bool | disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method) |
| bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method) |
| bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method) |
Protected Member Functions | |
| CThreadedReader (QObject *owner, const QString &name) | |
| Constructor. | |
| qint64 | lastModifiedMsSinceEpoch (QNetworkReply *nwReply) const |
| When was reply last modified, -1 if N/A. | |
| void | threadAssertCheck () const |
| Make sure everything runs correctly in own thread. | |
| bool | didContentChange (const QString &content, int startPosition=-1) |
| Stores new content hash and returns if content changed (based on hash value. More... | |
| bool | doWorkCheck () const |
| Still enabled etc.? More... | |
| QNetworkReply * | getFromNetworkAndLog (const swift::misc::network::CUrl &url, const swift::misc::CSlot< void(QNetworkReply *)> &callback) |
| Get request from network, and log with m_urlReadLog. More... | |
| virtual void | networkReplyProgress (int logId, qint64 current, qint64 max, const QUrl &url) |
| Network request progress. | |
| void | logNetworkReplyReceived (QNetworkReply *reply) |
| Network reply received, mark in m_urlReadLog. More... | |
Protected Member Functions inherited from swift::misc::CContinuousWorker | |
| virtual void | initialize () |
| Called when the thread is started. | |
| virtual void | cleanup () |
| Called when the thread is finished. | |
| virtual void | beforeQuit () noexcept |
| Called before quit is called. More... | |
| virtual unsigned long | waitTimeoutMs () const |
| Wait time for quitAndWait, 0 means not waiting. | |
Protected Member Functions inherited from swift::misc::CWorkerBase | |
| CWorkerBase () | |
| Constructor. | |
| bool | isAbandoned () const |
| For the task to check whether it can finish early. More... | |
| bool | hasStarted () const |
| True if the worker has started. | |
| void | setStarted () |
| Mark the task as started. | |
| void | setFinished () |
| Mark the task as finished. | |
Protected Member Functions inherited from QObject | |
| virtual void | childEvent (QChildEvent *event) |
| virtual void | connectNotify (const QMetaMethod &signal) |
| virtual void | customEvent (QEvent *event) |
| virtual void | disconnectNotify (const QMetaMethod &signal) |
| virtual void | timerEvent (QTimerEvent *event) |
| QObject * | sender () const const |
| bool | isSignalConnected (const QMetaMethod &signal) const const |
| int | receivers (const char *signal) const const |
| int | senderSignalIndex () const const |
Static Protected Member Functions | |
| static void | logInconsistentData (const swift::misc::CStatusMessage &msg, const char *funcInfo=nullptr) |
| Use this to log inconsistent data. More... | |
Protected Attributes | |
| QReadWriteLock | m_lock |
| lock which can be used from the derived classes More... | |
| std::atomic_int | m_networkReplyProgress |
| Progress percentage 0...100. | |
| std::atomic_llong | m_networkReplyCurrent |
| current bytes | |
| std::atomic_llong | m_networkReplyMax |
| max bytes | |
Additional Inherited Members | |
Public Types inherited from QObject | |
| enum | TimerId |
Signals inherited from swift::misc::CWorkerBase | |
| void | aboutToStart () |
| Emitted when the task is about to start. | |
| void | finished () |
| Emitted when the task is finished. More... | |
Public Attributes inherited from QObject | |
| typedef | QObjectList |
| Invalid | |
Properties inherited from QObject | |
| objectName | |
Support for threaded based reading and parsing tasks such as data files via http, or file system and parsing (such as FSX models) Usage: Create a subclass, call start() and dispatch a call to the thread of the reader. See protected functions for helpers (e.g. doWorkCheck() to check if the work should be continued)
Definition at line 32 of file threadedreader.h.
|
protected |
Stores new content hash and returns if content changed (based on hash value.
Definition at line 56 of file threadedreader.cpp.
|
protected |
Still enabled etc.?
Definition at line 89 of file threadedreader.cpp.
|
protected |
Get request from network, and log with m_urlReadLog.
Definition at line 101 of file threadedreader.cpp.
| CUrlLogList swift::core::CThreadedReader::getReadLog | ( | ) | const |
Get the read log.
Definition at line 76 of file threadedreader.cpp.
| QDateTime swift::core::CThreadedReader::getUpdateTimestamp | ( | ) | const |
Thread safe, get update timestamp.
Definition at line 38 of file threadedreader.cpp.
| CUrlLogList swift::core::CThreadedReader::getUrlLogList | ( | ) | const |
Get the URL log list.
Definition at line 50 of file threadedreader.cpp.
| bool swift::core::CThreadedReader::isMarkedAsFailed | ( | ) | const |
Is marked as read failed.
Definition at line 72 of file threadedreader.cpp.
|
staticprotected |
Use this to log inconsistent data.
Definition at line 143 of file threadedreader.cpp.
|
protected |
Network reply received, mark in m_urlReadLog.
Definition at line 136 of file threadedreader.cpp.
|
inline |
Used in unit test.
Definition at line 79 of file threadedreader.h.
| void swift::core::CThreadedReader::setMarkedAsFailed | ( | bool | failed | ) |
Set marker for read failed.
Definition at line 74 of file threadedreader.cpp.
| void swift::core::CThreadedReader::setUpdateTimestamp | ( | const QDateTime & | updateTimestamp = QDateTime::currentDateTimeUtc() | ) |
Thread safe, set update timestamp.
Definition at line 44 of file threadedreader.cpp.
|
mutableprotected |
lock which can be used from the derived classes
Definition at line 89 of file threadedreader.h.