Common System 0.2.0
Common interfaces and patterns for system integration
Loading...
Searching...
No Matches
transport.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
26#pragma once
27
28#include <concepts>
29#include <cstdint>
30#include <span>
31#include <string>
32#include <type_traits>
33
34namespace kcenon::common {
35
36// Forward declarations
37namespace interfaces {
38struct http_request;
39struct http_response;
40struct udp_endpoint;
41} // namespace interfaces
42
43namespace concepts {
44
63template <typename T>
64concept HttpSender = requires(T t, const interfaces::http_request& request) {
65 { t.send(request) };
66};
67
83template <typename T>
84concept HttpAvailabilityChecker = requires(const T t) {
85 { t.is_available() } -> std::convertible_to<bool>;
86};
87
108template <typename T>
110
126template <typename T>
127concept HttpClientProviderLike = requires(T t) {
128 { t.get_http_client() };
129 { t.create_http_client() };
130};
131
147template <typename T>
148concept UdpConnectable = requires(T t,
149 const std::string& host,
150 uint16_t port) {
151 { t.connect(host, port) };
152 { t.disconnect() } -> std::same_as<void>;
153};
154
173template <typename T>
174concept UdpSender = requires(T t,
175 std::span<const uint8_t> data,
176 const interfaces::udp_endpoint& endpoint) {
177 { t.send(data) };
178 { t.send_to(data, endpoint) };
179};
180
196template <typename T>
197concept UdpConnectionStatus = requires(const T t) {
198 { t.is_connected() } -> std::convertible_to<bool>;
199};
200
220template <typename T>
222 UdpSender<T> &&
224
240template <typename T>
241concept UdpClientProviderLike = requires(T t) {
242 { t.get_udp_client() };
243 { t.create_udp_client() };
244};
245
260template <typename T>
262
263} // namespace concepts
264} // namespace kcenon::common
A type that can check HTTP client availability.
Definition transport.h:84
A complete HTTP client type satisfying IHttpClient interface.
Definition transport.h:109
A type that can provide HTTP client instances.
Definition transport.h:127
A type that can send HTTP requests.
Definition transport.h:64
A type that represents any transport client (HTTP or UDP).
Definition transport.h:261
A complete UDP client type satisfying IUdpClient interface.
Definition transport.h:221
A type that can provide UDP client instances.
Definition transport.h:241
A type that supports UDP connection operations.
Definition transport.h:148
A type that can report UDP connection status.
Definition transport.h:197
A type that can send UDP datagrams.
Definition transport.h:174
Core interfaces.
Definition adapter.h:21