6#include <albert/export.h>
11namespace albert::detail
14class ALBERT_EXPORT Acquire :
public QObject
21 bool await_ready() const noexcept;
22 void await_suspend(std::coroutine_handle<> handle);
23 void await_resume() const noexcept;
26 inline auto operator co_await() {
return Awaiter{
this}; }
33 requires std::same_as<typename T::element_type, Acquire>
34inline auto operator co_await(T&& acquire) {
35 return Acquire::Awaiter{acquire.get()};
39class ALBERT_EXPORT RateLimiter :
public QObject
44 ~RateLimiter()
override;
46 void limit(std::chrono::milliseconds ms);
47 bool isLimited()
const;
49 std::unique_ptr<Acquire> acquire();
53 std::unique_ptr<Private> d;