Sane C++ Libraries
C++ Platform Abstraction Libraries
Loading...
Searching...
No Matches
HttpClientScheduler.h
1// Copyright (c) Stefano Cristiano
2// SPDX-License-Identifier: MIT
3#pragma once
4
5#include "HttpClient.h"
6
7namespace SC
8{
11
18
24struct SC_HTTP_CLIENT_EXPORT HttpClientOperationScheduler final : private HttpClientOperationNotifier
25{
26 [[nodiscard]] Result init(const HttpClientOperationSchedulerMemory& memory);
27 [[nodiscard]] Result close();
28
29 [[nodiscard]] Result markReady(HttpClientOperation& operation);
30 [[nodiscard]] Result pollReady(size_t& numPolled, uint32_t waitMilliseconds = 0);
31 [[nodiscard]] Result pollAll(size_t& numPolled);
32
33 [[nodiscard]] size_t getNumReadyOperations() const;
34 [[nodiscard]] size_t getNumOperations() const;
35 [[nodiscard]] size_t getNumRequestsInFlight() const;
36 [[nodiscard]] bool isOperationRegistered(HttpClientOperation& operation) const;
37 [[nodiscard]] bool hasRequestsInFlight() const;
38 [[nodiscard]] bool isInitialized() const { return initialized; }
39
40 private:
41 virtual void notifyHttpClientOperation(HttpClientOperation& operation) override;
42
43 [[nodiscard]] size_t findOperationIndex(HttpClientOperation& operation) const;
44 [[nodiscard]] bool hasReadyOperationLocked() const;
45
47 mutable HttpClientLocalMutex readyMutex;
48 HttpClientLocalConditionVariable readyCV;
49 bool initialized = false;
50};
51
53} // namespace SC
unsigned int uint32_t
Platform independent (4) bytes unsigned int.
Definition PrimitiveTypes.h:29
Optional notifier used by external adapters to wake up their own event loop.
Definition HttpClient.h:388
Caller-owned memory for HttpClientOperationScheduler.
Definition HttpClientScheduler.h:14
Span< uint8_t > readyOperations
One byte per operation.
Definition HttpClientScheduler.h:16
Optional coordinator for polling many HttpClientOperation instances.
Definition HttpClientScheduler.h:25
One in-flight HTTP request/response operation.
Definition HttpClient.h:502
An ascii string used as boolean result. SC_TRY macro forwards errors to caller.
Definition Result.h:13
View over a contiguous sequence of items (pointer + size in elements).
Definition Span.h:29