Manages and processes HTTP requests using a singleton pattern.
More...
#include <HttpRequestManager.hpp>
Manages and processes HTTP requests using a singleton pattern.
Definition at line 18 of file HttpRequestManager.hpp.
◆ callback_list_t
◆ HttpRequestManager() [1/2]
| kurlyk::HttpRequestManager::HttpRequestManager |
( |
| ) |
|
|
inlineprivate |
◆ HttpRequestManager() [2/2]
| kurlyk::HttpRequestManager::HttpRequestManager |
( |
const HttpRequestManager & | | ) |
|
|
privatedelete |
Deleted copy constructor to enforce the singleton pattern.
◆ add_request()
Adds a new HTTP request to the manager.
- Parameters
-
| request_ptr | Unique pointer to the HTTP request object containing request details. |
| callback | Callback function invoked when the request completes. |
- Returns
- True if the request was successfully added, false if admission was rejected.
Definition at line 32 of file HttpRequestManager.hpp.
◆ cancel_request_by_id()
| void kurlyk::HttpRequestManager::cancel_request_by_id |
( |
uint64_t | request_id, |
|
|
std::function< void()> | callback ) |
|
inline |
Cancels a request by its unique identifier.
- Parameters
-
| request_id | The unique identifier of the request to cancel. |
| callback | An optional callback function to execute after cancellation. |
Definition at line 100 of file HttpRequestManager.hpp.
◆ cleanup_pending_requests()
| void kurlyk::HttpRequestManager::cleanup_pending_requests |
( |
| ) |
|
|
inlineprivate |
Cleans up pending requests, marking each as failed and invoking its callback.
Definition at line 290 of file HttpRequestManager.hpp.
◆ create_rate_limit()
| const long kurlyk::HttpRequestManager::create_rate_limit |
( |
long | requests_per_period, |
|
|
long | period_ms ) |
|
inline |
Creates a rate limit with specified parameters.
- Parameters
-
| requests_per_period | Maximum number of requests allowed in the specified period. |
| period_ms | Time period in milliseconds during which the rate limit applies. |
- Returns
- A unique identifier for the created rate limit.
Definition at line 68 of file HttpRequestManager.hpp.
◆ generate_request_id()
| uint64_t kurlyk::HttpRequestManager::generate_request_id |
( |
| ) |
|
|
inline |
Generates a new unique request ID.
- Returns
- A new unique request ID.
Definition at line 81 of file HttpRequestManager.hpp.
◆ get_instance()
◆ is_loaded()
| const bool kurlyk::HttpRequestManager::is_loaded |
( |
| ) |
const |
|
inlineoverridevirtual |
◆ max_pending_requests()
| std::size_t kurlyk::HttpRequestManager::max_pending_requests |
( |
| ) |
const |
|
inline |
Returns the current maximum pending request count.
- Returns
- Configured queue limit, or 0 if the queue is unbounded.
Definition at line 93 of file HttpRequestManager.hpp.
◆ operator=()
Deleted copy assignment operator to enforce the singleton pattern.
◆ process()
| void kurlyk::HttpRequestManager::process |
( |
| ) |
|
|
inlineoverridevirtual |
◆ process_active_requests()
| void kurlyk::HttpRequestManager::process_active_requests |
( |
| ) |
|
|
inlineprivate |
Processes active requests, moving failed ones to the failed requests list for retrying.
Definition at line 210 of file HttpRequestManager.hpp.
◆ process_cancel_requests()
| void kurlyk::HttpRequestManager::process_cancel_requests |
( |
| ) |
|
|
inlineprivate |
◆ process_pending_requests()
| void kurlyk::HttpRequestManager::process_pending_requests |
( |
| ) |
|
|
inlineprivate |
Processes all pending requests, moving valid requests to active batches or marking them as failed.
Definition at line 152 of file HttpRequestManager.hpp.
◆ process_retry_failed_requests()
| void kurlyk::HttpRequestManager::process_retry_failed_requests |
( |
| ) |
|
|
inlineprivate |
◆ remove_limit()
| bool kurlyk::HttpRequestManager::remove_limit |
( |
long | limit_id | ) |
|
|
inline |
Removes an existing rate limit with the specified identifier.
- Parameters
-
| limit_id | The unique identifier of the rate limit to be removed. |
- Returns
- True if the rate limit was successfully removed, or false if the rate limit ID was not found.
Definition at line 75 of file HttpRequestManager.hpp.
◆ set_max_pending_requests()
| void kurlyk::HttpRequestManager::set_max_pending_requests |
( |
std::size_t | max_pending_requests | ) |
|
|
inline |
Sets the maximum number of pending requests accepted into the global queue.
- Parameters
-
Definition at line 87 of file HttpRequestManager.hpp.
◆ shutdown()
| void kurlyk::HttpRequestManager::shutdown |
( |
| ) |
|
|
inlineoverridevirtual |
◆ submit_request()
Attempts to enqueue a new HTTP request and reports the admission result.
- Parameters
-
| request_ptr | Unique pointer to the HTTP request object containing request details. |
| callback | Callback function invoked when the request completes. |
- Returns
- SubmitResult describing whether the request was accepted into the pending queue.
Definition at line 42 of file HttpRequestManager.hpp.
◆ ~HttpRequestManager()
| virtual kurlyk::HttpRequestManager::~HttpRequestManager |
( |
| ) |
|
|
inlineprivatevirtual |
◆ m_active_request_batches
◆ m_failed_requests
| std::list<std::unique_ptr<HttpRequestContext> > kurlyk::HttpRequestManager::m_failed_requests |
|
private |
◆ m_max_pending_requests
| std::atomic<std::size_t> kurlyk::HttpRequestManager::m_max_pending_requests = ATOMIC_VAR_INIT(0) |
|
private |
Maximum number of requests accepted into the pending queue, or zero if unbounded.
Definition at line 149 of file HttpRequestManager.hpp.
◆ m_mutex
| std::mutex kurlyk::HttpRequestManager::m_mutex |
|
mutableprivate |
Mutex to protect access to the pending requests list and requests-to-cancel map.
Definition at line 140 of file HttpRequestManager.hpp.
◆ m_pending_requests
| std::list<std::unique_ptr<HttpRequestContext> > kurlyk::HttpRequestManager::m_pending_requests |
|
private |
◆ m_rate_limiter
◆ m_request_id_counter
| std::atomic<uint64_t> kurlyk::HttpRequestManager::m_request_id_counter = ATOMIC_VAR_INIT(1) |
|
private |
◆ m_requests_to_cancel
| std::unordered_map<uint64_t, callback_list_t> kurlyk::HttpRequestManager::m_requests_to_cancel |
|
private |
◆ m_shutdown
| std::atomic<bool> kurlyk::HttpRequestManager::m_shutdown = ATOMIC_VAR_INIT(false) |
|
private |
The documentation for this class was generated from the following file: