2#ifndef COROUTINE_HPP_INCLUDED
3#define COROUTINE_HPP_INCLUDED
26 std::optional<std::expected<Response, HttpError>>
result;
36 result.emplace(std::move(resp));
41 result.emplace(std::unexpected(std::move(err)));
60 std::optional<std::expected<std::string, HttpError>>
result;
68 [
this, h](std::string body)
mutable
70 result.emplace(std::move(body));
75 result.emplace(std::unexpected(std::move(err)));
98 inline detail::FetchAwaitable
101 return {connection, request, {}, {}};
113 inline detail::PaginatedFetchAwaitable
116 return {connection, request, strategy, {}, {}};
Definition base_connection.hpp:13
std::shared_ptr< std::atomic< bool > > CancellationToken
Token returned by asynchronous fetch(); set it to true to cancel the request.
Definition iconnection.hpp:33
detail::FetchAwaitable coFetch(IConnection &connection, const std::string &request)
Asynchronously fetch a single resource.
Definition coroutine.hpp:99
Definition coroutine.hpp:128
void return_void()
Definition coroutine.hpp:132
std::suspend_never final_suspend() noexcept
Definition coroutine.hpp:131
void unhandled_exception()
Definition coroutine.hpp:133
std::suspend_never initial_suspend() noexcept
Definition coroutine.hpp:130
Detached get_return_object()
Definition coroutine.hpp:129
Fire-and-forget coroutine wrapper.
Definition coroutine.hpp:126
Represents an HTTP or network-level error.
Definition http_error.hpp:28
Interface representing connection with rest api server.
Definition iconnection.hpp:39
virtual std::expected< std::string, HttpError > fetch(const std::string &request)=0
Perform a single HTTP request.
HTTP response containing body, raw headers and the HTTP status code.
Definition iconnection.hpp:26
Awaitable wrapping IConnection::fetch(request, onSuccess, onError)
Definition coroutine.hpp:23
bool await_ready() const noexcept
Definition coroutine.hpp:29
std::string request
Definition coroutine.hpp:25
std::expected< Response, HttpError > await_resume()
Definition coroutine.hpp:46
CancellationToken cancel
Definition coroutine.hpp:27
std::optional< std::expected< Response, HttpError > > result
Definition coroutine.hpp:26
IConnection & connection
Definition coroutine.hpp:24
void await_suspend(std::coroutine_handle<> h)
Definition coroutine.hpp:31
Awaitable wrapping paginated IConnection::fetch.
Definition coroutine.hpp:56
void await_suspend(std::coroutine_handle<> h)
Definition coroutine.hpp:65
std::optional< std::expected< std::string, HttpError > > result
Definition coroutine.hpp:60
std::expected< std::string, HttpError > await_resume()
Definition coroutine.hpp:80
CancellationToken cancel
Definition coroutine.hpp:61
std::string request
Definition coroutine.hpp:58
IConnection & connection
Definition coroutine.hpp:57
bool await_ready() const noexcept
Definition coroutine.hpp:63
IPaginationStrategy & strategy
Definition coroutine.hpp:59