Albert
Loading...
Searching...
No Matches
ratelimiter.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2025 Manuel Schneider
2// SPDX-License-Identifier: MIT
3
4#pragma once
5#include <QObject>
6#include <albert/export.h>
7#include <memory>
8
9namespace albert::detail
10{
11class RateLimiterPrivate;
12
13class ALBERT_EXPORT Acquire : public QObject
14{
15 Q_OBJECT
16public:
17 Acquire();
18 ~Acquire() override;
19
20 bool isGranted();
21
22 bool await(std::function<bool()> stop_requested);
23
24signals:
25 void granted();
26
27private:
28 class Private;
29 std::unique_ptr<Private> d;
30
31 friend class RateLimiterPrivate;
32};
33
34class ALBERT_EXPORT RateLimiter : public QObject
35{
36 Q_OBJECT
37public:
38 RateLimiter(uint delay);
39 ~RateLimiter() override;
40
41 void setDelay(uint delay);
42 uint delay() const;
43
44 std::unique_ptr<Acquire> acquire();
45
46private:
47 std::unique_ptr<RateLimiterPrivate> d;
48};
49
50} // namespace albert::detail
QNetworkReply * await(QNetworkReply *reply)
Blocks until reply is finished.