Kurlyk
Toggle main menu visibility
Loading...
Searching...
No Matches
HttpRequestContext.hpp
Go to the documentation of this file.
1
#pragma once
2
#ifndef _KURLYK_HTTP_REQUEST_CONTEXT_HPP_INCLUDED
3
#define _KURLYK_HTTP_REQUEST_CONTEXT_HPP_INCLUDED
4
7
8
namespace
kurlyk
{
9
12
class
HttpRequestContext
{
13
public
:
14
using
time_point_t
= std::chrono::steady_clock::time_point;
15
16
std::unique_ptr<HttpRequest>
request
;
17
HttpResponseCallback
callback
;
18
long
retry_attempt
;
19
time_point_t
start_time
;
20
uint64_t
in_flight_token
= 0;
21
std::function<void()>
on_complete
;
22
std::atomic<bool>
complete_called
{
false
};
23
27
HttpRequestContext
(
28
std::unique_ptr<HttpRequest> request_ptr,
29
HttpResponseCallback
callback
)
30
:
request
(
std
::move(request_ptr)),
31
callback
(
std
::move(
callback
)),
32
retry_attempt
(0),
33
in_flight_token
(0),
34
complete_called
(false) {
35
}
36
37
HttpRequestContext
() =
default
;
38
40
void
complete
() {
41
bool
expected =
false
;
42
if
(!
complete_called
.compare_exchange_strong(expected,
true
)) {
43
return
;
44
}
45
if
(
on_complete
) {
46
on_complete
();
47
}
48
}
49
};
// HttpRequestContext
50
51
}
// namespace kurlyk
52
53
#endif
// _KURLYK_HTTP_REQUEST_CONTEXT_HPP_INCLUDED
kurlyk::HttpRequestContext::complete
void complete()
Invokes on_complete exactly once. Thread-safe and idempotent.
Definition
HttpRequestContext.hpp:40
kurlyk::HttpRequestContext::start_time
time_point_t start_time
Time when the request was initially created or last retried.
Definition
HttpRequestContext.hpp:19
kurlyk::HttpRequestContext::request
std::unique_ptr< HttpRequest > request
The HTTP request associated with this context.
Definition
HttpRequestContext.hpp:16
kurlyk::HttpRequestContext::complete_called
std::atomic< bool > complete_called
True after on_complete has been invoked.
Definition
HttpRequestContext.hpp:22
kurlyk::HttpRequestContext::on_complete
std::function< void()> on_complete
Callback invoked once when the request finishes (including retries).
Definition
HttpRequestContext.hpp:21
kurlyk::HttpRequestContext::retry_attempt
long retry_attempt
Number of retry attempts made for this request.
Definition
HttpRequestContext.hpp:18
kurlyk::HttpRequestContext::time_point_t
std::chrono::steady_clock::time_point time_point_t
Definition
HttpRequestContext.hpp:14
kurlyk::HttpRequestContext::in_flight_token
uint64_t in_flight_token
Token for sequential rate-limit tracking.
Definition
HttpRequestContext.hpp:20
kurlyk::HttpRequestContext::HttpRequestContext
HttpRequestContext()=default
kurlyk::HttpRequestContext::callback
HttpResponseCallback callback
Callback function to be invoked when the request completes.
Definition
HttpRequestContext.hpp:17
kurlyk::HttpRequestContext::HttpRequestContext
HttpRequestContext(std::unique_ptr< HttpRequest > request_ptr, HttpResponseCallback callback)
Constructs a HttpRequestContext with the specified request and callback.
Definition
HttpRequestContext.hpp:27
kurlyk
Primary namespace for the Kurlyk library, encompassing initialization, request management,...
kurlyk::HttpResponseCallback
std::function< void(HttpResponsePtr response)> HttpResponseCallback
Callback invoked with an HTTP response.
Definition
HttpResponse.hpp:40
std
Enables use of ClientError with std::error_code.
Definition
ClientErrorCategory.hpp:69
include
kurlyk
http
HttpRequestManager
HttpRequestContext.hpp
Generated by
1.17.0