swift
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
swift::core::CThreadedReader Class Reference

Support for threaded based reading and parsing tasks such as data files via http, or file system and parsing (such as FSX models) More...

Inheritance diagram for swift::core::CThreadedReader:
[legend]

Public Member Functions

virtual ~CThreadedReader ()
 Destructor.
 
QDateTime getUpdateTimestamp () const
 Thread safe, get update timestamp. More...
 
void setUpdateTimestamp (const QDateTime &updateTimestamp=QDateTime::currentDateTimeUtc())
 Thread safe, set update timestamp. More...
 
bool updatedWithinLastMs (qint64 timeLastMs)
 Was setup read within last xx milliseconds. 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 startReader ()
 Starts the reader. More...
 
void pauseReader ()
 Pauses the reader. More...
 
void markAsUsedInUnitTest ()
 Used in unit test. More...
 
bool hasPendingUrls () const
 Has pending URLs? More...
 
swift::misc::network::CUrlLogList getUrlLogList () const
 Get the URL log list. More...
 
int getNetworkReplyProgress () const
 Progress 0..100. 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...
 
void setEnabled (bool enabled)
 Enabled (running)? More...
 
void startUpdating (int updateTimeSecs)
 Start updating (start/stop timer) More...
 
const QString & getName ()
 Name of the worker.
 
const QObject * owner () const
 Owner of the worker.
 
- Public Member Functions inherited from swift::misc::CWorkerBase
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().
 

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.
 

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 everthing 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...
 
void setInitialAndPeriodicTime (int initialTime, int periodicTime)
 Set initial and periodic times.
 
virtual void doWorkImpl ()
 This method does the actual work in the derived class.
 
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.
 
void stopUpdateTimer ()
 Safely stop update time.
 
- Protected Member Functions inherited from swift::misc::CWorkerBase
 CWorkerBase ()
 Constructor.
 
 ~CWorkerBase ()
 Destructor.
 
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.
 

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_networkReplyNax
 max bytes
 
- Protected Attributes inherited from swift::misc::CContinuousWorker
QTimer m_updateTimer { this }
 timer which can be used by implementing classes
 

Additional Inherited Members

- 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...
 

Detailed Description

Support for threaded based reading and parsing tasks such as data files via http, or file system and parsing (such as FSX models)

Definition at line 31 of file threadedreader.h.

Member Function Documentation

◆ didContentChange()

bool swift::core::CThreadedReader::didContentChange ( const QString &  content,
int  startPosition = -1 
)
protected

Stores new content hash and returns if content changed (based on hash value.

Remarks
This function is thread safe.

Definition at line 84 of file threadedreader.cpp.

◆ doWorkCheck()

bool swift::core::CThreadedReader::doWorkCheck ( ) const
protected

Still enabled etc.?

Remarks
This function is thread safe. under normal conditions

Definition at line 140 of file threadedreader.cpp.

◆ getFromNetworkAndLog()

QNetworkReply * swift::core::CThreadedReader::getFromNetworkAndLog ( const swift::misc::network::CUrl url,
const swift::misc::CSlot< void(QNetworkReply *)> &  callback 
)
protected

Get request from network, and log with m_urlReadLog.

Remarks
This function is thread safe. read log access is thread safe

Definition at line 152 of file threadedreader.cpp.

◆ getNetworkReplyProgress()

int swift::core::CThreadedReader::getNetworkReplyProgress ( ) const
inline

Progress 0..100.

Remarks
This function is thread safe.

Definition at line 90 of file threadedreader.h.

◆ getReadLog()

CUrlLogList swift::core::CThreadedReader::getReadLog ( ) const

Get the read log.

Remarks
This function is thread safe.

Definition at line 104 of file threadedreader.cpp.

◆ getUpdateTimestamp()

QDateTime swift::core::CThreadedReader::getUpdateTimestamp ( ) const

Thread safe, get update timestamp.

Remarks
This function is thread safe.

Definition at line 44 of file threadedreader.cpp.

◆ getUrlLogList()

CUrlLogList swift::core::CThreadedReader::getUrlLogList ( ) const

Get the URL log list.

Remarks
This function is thread safe.

Definition at line 78 of file threadedreader.cpp.

◆ hasPendingUrls()

bool swift::core::CThreadedReader::hasPendingUrls ( ) const

Has pending URLs?

Remarks
This function is thread safe.

Definition at line 72 of file threadedreader.cpp.

◆ isMarkedAsFailed()

bool swift::core::CThreadedReader::isMarkedAsFailed ( ) const

Is marked as read failed.

Remarks
This function is thread safe.
Deprecated:
likely to be removed

Definition at line 100 of file threadedreader.cpp.

◆ logInconsistentData()

void swift::core::CThreadedReader::logInconsistentData ( const swift::misc::CStatusMessage msg,
const char *  funcInfo = nullptr 
)
staticprotected

Use this to log inconsistent data.

Remarks
here in a single function severity / format can be adjusted

Definition at line 194 of file threadedreader.cpp.

◆ logNetworkReplyReceived()

void swift::core::CThreadedReader::logNetworkReplyReceived ( QNetworkReply *  reply)
protected

Network reply received, mark in m_urlReadLog.

Remarks
This function is thread safe.

Definition at line 187 of file threadedreader.cpp.

◆ markAsUsedInUnitTest()

void swift::core::CThreadedReader::markAsUsedInUnitTest ( )
inline

Used in unit test.

Remarks
needs to be done before started in different thread

Definition at line 78 of file threadedreader.h.

◆ pauseReader()

void swift::core::CThreadedReader::pauseReader ( )

Pauses the reader.

Remarks
This function is thread safe.

Definition at line 70 of file threadedreader.cpp.

◆ setMarkedAsFailed()

void swift::core::CThreadedReader::setMarkedAsFailed ( bool  failed)

Set marker for read failed.

Remarks
This function is thread safe.
Deprecated:
2017-09 likely to be removed, using m_urlReadLog in future

Definition at line 102 of file threadedreader.cpp.

◆ setUpdateTimestamp()

void swift::core::CThreadedReader::setUpdateTimestamp ( const QDateTime &  updateTimestamp = QDateTime::currentDateTimeUtc())

Thread safe, set update timestamp.

Remarks
This function is thread safe.

Definition at line 50 of file threadedreader.cpp.

◆ startReader()

void swift::core::CThreadedReader::startReader ( )

Starts the reader.

Remarks
This function is thread safe.

Definition at line 64 of file threadedreader.cpp.

◆ updatedWithinLastMs()

bool swift::core::CThreadedReader::updatedWithinLastMs ( qint64  timeLastMs)

Was setup read within last xx milliseconds.

Remarks
This function is thread safe.

Definition at line 56 of file threadedreader.cpp.

Member Data Documentation

◆ m_lock

QReadWriteLock swift::core::CThreadedReader::m_lock
mutableprotected
Initial value:
{
QReadWriteLock::Recursive
}

lock which can be used from the derived classes

Definition at line 96 of file threadedreader.h.


The documentation for this class was generated from the following files: