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.
 
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.
 

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 34 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 70 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 64 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 91 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 45 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 87 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 86 of file HttpBatchRequestHandler.hpp.

◆ m_multi_handle

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

libcurl multi handle.

Definition at line 85 of file HttpBatchRequestHandler.hpp.


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