QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
ComponentInformationCache.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QString>
4#include <QtCore/QDir>
5#include <QtCore/QMap>
6
14class ComponentInformationCache : public QObject
15{
16 Q_OBJECT
17public:
18 ComponentInformationCache(const QDir& path, int maxNumFiles);
19
21
27 QString access(const QString& fileTag);
28
35 QString insert(const QString &fileTag, const QString& fileName);
36
37private:
38
39 static constexpr const char* _metaExtension = ".meta";
40 static constexpr const char* _cacheExtension = ".cache";
41
42 using AccessCounterType = uint64_t;
43
44 struct Meta {
45 uint32_t magic{0x9a9cad0e};
46 uint32_t version{0};
47 AccessCounterType accessCounter{0};
48 };
49
50 void initializeDirectory();
51 void removeOldEntries();
52
53 QString metaFileName(const QString& fileTag);
54 QString dataFileName(const QString& fileTag);
55
56 const QDir _path;
57 const int _maxNumFiles;
58
59 AccessCounterType _nextAccessCounter{0};
60 int _numFiles{0};
61 QMap<AccessCounterType, QString> _cachedFiles;
62};
static ComponentInformationCache & defaultInstance()
QString insert(const QString &fileTag, const QString &fileName)
QString access(const QString &fileTag)