Kurlyk
Loading...
Searching...
No Matches
kurlyk::HttpBatchRequestHandler Class Reference

Handles multiple asynchronous HTTP requests using libcurl's multi interface. More...

#include <HttpBatchRequestHandler.hpp>

Public Member Functions

 HttpBatchRequestHandler (std::vector< std::unique_ptr< HttpRequestContext > > &context_list)
 Constructs a handler for managing multiple HTTP requests asynchronously.
 ~HttpBatchRequestHandler ()
 Cleans up the multi handle and removes all request handles.
bool process ()
 Processes the requests within the handler.
std::list< std::unique_ptr< HttpRequestContext > > extract_failed_requests ()
 Extracts the list of failed requests.
bool has_group_id (uint64_t group_id) const
 Checks whether this batch contains a request from the specified group.
std::size_t group_request_count (uint64_t group_id) const
 Counts active requests from the specified group.
void cancel_request_by_id (const std::unordered_map< uint64_t, std::list< std::function< void()> > > &to_cancel)
 Cancels HTTP requests based on their unique IDs.
void cancel_requests (const std::unordered_map< uint64_t, std::list< std::function< void()> > > &requests_to_cancel, const std::unordered_map< uint64_t, std::list< std::function< void()> > > &groups_to_cancel)
 Cancels HTTP requests based on their request or group IDs.

Private Member Functions

void handle_completed_request (CURLMsg *message)
 Handles the completion of a single request.

Private Attributes

CURLM * m_multi_handle = nullptr
 libcurl multi handle.
std::vector< std::unique_ptr< HttpRequestHandler > > m_handlers
 Collection of active request handlers.
std::list< std::unique_ptr< HttpRequestContext > > m_failed_requests
 List of failed request contexts.

Detailed Description

Handles multiple asynchronous HTTP requests using libcurl's multi interface.

Definition at line 12 of file HttpBatchRequestHandler.hpp.

Constructor & Destructor Documentation

◆ HttpBatchRequestHandler()

kurlyk::HttpBatchRequestHandler::HttpBatchRequestHandler ( std::vector< std::unique_ptr< HttpRequestContext > > & context_list)
inlineexplicit

Constructs a handler for managing multiple HTTP requests asynchronously.

Parameters
context_listList of unique pointers to HttpRequestContext objects.

Definition at line 17 of file HttpBatchRequestHandler.hpp.

◆ ~HttpBatchRequestHandler()

kurlyk::HttpBatchRequestHandler::~HttpBatchRequestHandler ( )
inline

Cleans up the multi handle and removes all request handles.

Definition at line 73 of file HttpBatchRequestHandler.hpp.

Member Function Documentation

◆ cancel_request_by_id()

void kurlyk::HttpBatchRequestHandler::cancel_request_by_id ( const std::unordered_map< uint64_t, std::list< std::function< void()> > > & to_cancel)
inline

Cancels HTTP requests based on their unique IDs.

Parameters
to_cancelA map of request IDs to their corresponding cancellation callbacks.

Definition at line 153 of file HttpBatchRequestHandler.hpp.

◆ cancel_requests()

void kurlyk::HttpBatchRequestHandler::cancel_requests ( const std::unordered_map< uint64_t, std::list< std::function< void()> > > & requests_to_cancel,
const std::unordered_map< uint64_t, std::list< std::function< void()> > > & groups_to_cancel )
inline

Cancels HTTP requests based on their request or group IDs.

Parameters
requests_to_cancelA map of request IDs to their corresponding cancellation callbacks.
groups_to_cancelA map of group IDs to their corresponding cancellation callbacks.

Definition at line 160 of file HttpBatchRequestHandler.hpp.

◆ extract_failed_requests()

std::list< std::unique_ptr< HttpRequestContext > > kurlyk::HttpBatchRequestHandler::extract_failed_requests ( )
inline

Extracts the list of failed requests.

Returns
A list of failed request contexts.

Definition at line 125 of file HttpBatchRequestHandler.hpp.

◆ group_request_count()

std::size_t kurlyk::HttpBatchRequestHandler::group_request_count ( uint64_t group_id) const
inline

Counts active requests from the specified group.

Parameters
group_idGroup ID to inspect.
Returns
Number of active requests belonging to this group.

Definition at line 139 of file HttpBatchRequestHandler.hpp.

◆ handle_completed_request()

void kurlyk::HttpBatchRequestHandler::handle_completed_request ( CURLMsg * message)
inlineprivate

Handles the completion of a single request.

Parameters
messageCURLMsg structure containing the result of the completed request.

Definition at line 187 of file HttpBatchRequestHandler.hpp.

◆ has_group_id()

bool kurlyk::HttpBatchRequestHandler::has_group_id ( uint64_t group_id) const
inline

Checks whether this batch contains a request from the specified group.

Parameters
group_idGroup ID to inspect.
Returns
True if at least one active request belongs to this group.

Definition at line 132 of file HttpBatchRequestHandler.hpp.

◆ process()

bool kurlyk::HttpBatchRequestHandler::process ( )
inline

Processes the requests within the handler.

Returns
True if all requests are completed, false otherwise.

Definition at line 86 of file HttpBatchRequestHandler.hpp.

Member Data Documentation

◆ m_failed_requests

std::list<std::unique_ptr<HttpRequestContext> > kurlyk::HttpBatchRequestHandler::m_failed_requests
private

List of failed request contexts.

Definition at line 183 of file HttpBatchRequestHandler.hpp.

◆ m_handlers

std::vector<std::unique_ptr<HttpRequestHandler> > kurlyk::HttpBatchRequestHandler::m_handlers
private

Collection of active request handlers.

Definition at line 182 of file HttpBatchRequestHandler.hpp.

◆ m_multi_handle

CURLM* kurlyk::HttpBatchRequestHandler::m_multi_handle = nullptr
private

libcurl multi handle.

Definition at line 181 of file HttpBatchRequestHandler.hpp.


The documentation for this class was generated from the following file: