QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
QGCTileCacheWorker.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QElapsedTimer>
4#include <QtCore/QLoggingCategory>
5#include <QtCore/QMutex>
6#include <QtCore/QQueue>
7#include <QtCore/QString>
8#include <QtCore/QThread>
9#include <QtCore/QWaitCondition>
10
11#include <memory>
12
13Q_DECLARE_LOGGING_CATEGORY(QGCTileCacheWorkerLog)
14
15class QGCMapTask;
17
18class QGCCacheWorker : public QThread
19{
20 Q_OBJECT
21
22public:
23 explicit QGCCacheWorker(QObject *parent = nullptr);
25
26 void setDatabaseFile(const QString &path) { if (isRunning()) { return; } _databasePath = path; }
27
28public slots:
29 bool enqueueTask(QGCMapTask *task);
30 void stop();
31
32signals:
33 void updateTotals(quint32 totaltiles, quint64 totalsize, quint32 defaulttiles, quint64 defaultsize);
34
35protected:
36 void run() final;
37
38private:
39 void _runTask(QGCMapTask *task);
40
41 void _saveTile(QGCMapTask *task);
42 void _getTile(QGCMapTask *task);
43 void _getTileSets(QGCMapTask *task);
44 void _createTileSet(QGCMapTask *task);
45 void _getTileDownloadList(QGCMapTask *task);
46 void _updateTileDownloadState(QGCMapTask *task);
47 void _pruneCache(QGCMapTask *task);
48 void _deleteTileSet(QGCMapTask *task);
49 void _renameTileSet(QGCMapTask *task);
50 void _resetCacheDatabase(QGCMapTask *task);
51 void _importSets(QGCMapTask *task);
52 void _exportSets(QGCMapTask *task);
53 bool _testTask(QGCMapTask *task);
54 void _emitTotals();
55
56 std::unique_ptr<QGCTileCacheDatabase> _database;
57 QMutex _taskQueueMutex;
58 QQueue<QGCMapTask*> _taskQueue;
59 QWaitCondition _waitc;
60 QString _databasePath;
61 QElapsedTimer _updateTimer;
62 int _updateTimeout = kShortTimeoutMs;
63 std::atomic_bool _dbValid = false;
64 std::atomic_bool _stopRequested = false;
65
66 static constexpr int kShortTimeoutMs = 2000;
67 static constexpr int kLongTimeoutMs = 5000;
68};
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
bool enqueueTask(QGCMapTask *task)
void updateTotals(quint32 totaltiles, quint64 totalsize, quint32 defaulttiles, quint64 defaultsize)
void setDatabaseFile(const QString &path)