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/QLoggingCategory>
4#include <QtCore/QString>
5#include <QtCore/QDir>
6#include <QtCore/QMap>
7
8Q_DECLARE_LOGGING_CATEGORY(ComponentInformationCacheLog)
9
10
17class ComponentInformationCache : public QObject
18{
19 Q_OBJECT
20public:
21 ComponentInformationCache(const QDir& path, int maxNumFiles);
22
23 static ComponentInformationCache& defaultInstance();
24
30 QString access(const QString& fileTag);
31
38 QString insert(const QString &fileTag, const QString& fileName);
39
40private:
41
42 static constexpr const char* _metaExtension = ".meta";
43 static constexpr const char* _cacheExtension = ".cache";
44
45 using AccessCounterType = uint64_t;
46
47 struct Meta {
48 uint32_t magic{0x9a9cad0e};
49 uint32_t version{0};
50 AccessCounterType accessCounter{0};
51 };
52
53 void initializeDirectory();
54 void removeOldEntries();
55
56 QString metaFileName(const QString& fileTag);
57 QString dataFileName(const QString& fileTag);
58
59 const QDir _path;
60 const int _maxNumFiles;
61
62 AccessCounterType _nextAccessCounter{0};
63 int _numFiles{0};
64 QMap<AccessCounterType, QString> _cachedFiles;
65};
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)