12345678910111213141516171819202122232425262728293031323334353637383940 |
- #pragma once
- #include <atomic> // or std::atomic
- #include <functional> // for function
- #include <memory> // for shared_ptr
- #include <string> // for string
- namespace cspot {
- struct Context;
- class AccessKeyFetcher {
- public:
- AccessKeyFetcher(std::shared_ptr<cspot::Context> ctx);
- /**
- * @brief Checks if key is expired
- * @returns true when currently held access key is not valid
- */
- bool isExpired();
- /**
- * @brief Fetches a new access key
- * @remark In case the key is expired, this function blocks until a refresh is done.
- * @returns access key
- */
- std::string getAccessKey();
- /**
- * @brief Forces a refresh of the access key
- */
- void updateAccessKey();
- private:
- std::shared_ptr<cspot::Context> ctx;
- std::atomic<bool> keyPending = false;
- std::string accessKey;
- long long int expiresAt;
- };
- } // namespace cspot
|