-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathabstractthreadworker.cpp
More file actions
68 lines (56 loc) · 1.27 KB
/
Copy pathabstractthreadworker.cpp
File metadata and controls
68 lines (56 loc) · 1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include "abstractthreadworker.h"
CAbstractThreadWorker::CAbstractThreadWorker(QObject *parent) : QObject(parent)
{
}
int CAbstractThreadWorker::workerWeight()
{
return 0;
}
void CAbstractThreadWorker::start()
{
resetAbortFlag();
Q_EMIT started();
m_started = true;
startMain();
}
void CAbstractThreadWorker::abort()
{
m_abortFlag.storeRelease(true);
if (!m_started) {
Q_EMIT finished();
}
}
void CAbstractThreadWorker::addLoadedRequest(qint64 size)
{
m_loadedTotalSize += size;
m_loadedRequestCount++;
Q_EMIT dataLoaded(m_loadedTotalSize,m_loadedRequestCount,
workerDescription());
}
qint64 CAbstractThreadWorker::loadedTotalSize() const
{
return m_loadedTotalSize;
}
qint64 CAbstractThreadWorker::loadedRequestCount() const
{
return m_loadedRequestCount;
}
bool CAbstractThreadWorker::exitIfAborted()
{
if (m_abortFlag.loadAcquire()) {
if (m_abortedFinished.testAndSetOrdered(false,true)) {
Q_EMIT finished();
}
return true;
}
return false;
}
bool CAbstractThreadWorker::isAborted()
{
return m_abortFlag.loadAcquire();
}
void CAbstractThreadWorker::resetAbortFlag()
{
m_abortFlag.storeRelease(false);
m_abortedFinished.storeRelease(false);
}