QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
BulkRefreshJob.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QObject>
4#include <QtCore/QSet>
5#include <QtCore/QString>
6#include <QtCore/QStringList>
7#include <QtCore/QTimer>
8
9#include <functional>
10
12
15class BulkRefreshJob : public QObject
16{
17public:
18 BulkRefreshJob(ParameterManager *mgr, int componentId, const QStringList &resolvedNames,
19 bool notifyFailure, std::function<void(const QString &)> requestFn,
20 QObject *parent);
21
22 static constexpr int kMaxRetryRounds = 3;
23 static constexpr int kRetryBaseDelayMs = 1000;
24
25private:
26 void _sendPendingRequests();
27 void _onParamSuccess(int componentId, const QString &paramName, int paramIndex);
28 void _onParamFailure(int componentId, const QString &paramName, int paramIndex);
29 void _checkRoundComplete();
30
31 ParameterManager *_mgr;
32 int _componentId;
33 bool _notifyFailure;
34 std::function<void(const QString&)> _requestFn;
35 QSet<QString> _pending;
36 QSet<QString> _failed;
37 int _round = 0;
38 const int _retryBaseDelayMs;
39 QTimer _retryTimer;
40};
static constexpr int kMaxRetryRounds
Number of batch-level retry rounds before giving up.
static constexpr int kRetryBaseDelayMs
Base retry interval; doubled each round.