llmx-rtaco 0.0.1
RTNL-only netlink control-plane library for Linux (C++23).
Loading...
Searching...
No Matches
nl_test_hooks.hxx
Go to the documentation of this file.
1#pragma once
2
3#include <atomic>
4#include <cerrno>
5#include <system_error>
6
7namespace llmx {
9
10inline std::atomic_int socket_open_errno{0};
11inline std::atomic_int socket_bind_errno{0};
12inline std::atomic_int gate_wait_errno{0};
13
14inline void reset() {
15 socket_open_errno.store(0, std::memory_order_relaxed);
16 socket_bind_errno.store(0, std::memory_order_relaxed);
17 gate_wait_errno.store(0, std::memory_order_relaxed);
18}
19
20inline void fail_socket_open_once(std::errc code) {
21 socket_open_errno.store(static_cast<int>(code), std::memory_order_relaxed);
22}
23
24inline void fail_socket_bind_once(std::errc code) {
25 socket_bind_errno.store(static_cast<int>(code), std::memory_order_relaxed);
26}
27
28inline void fail_gate_wait_once(std::errc code) {
29 gate_wait_errno.store(static_cast<int>(code), std::memory_order_relaxed);
30}
31
32inline auto consume_socket_open_error() -> std::error_code {
33 auto value = socket_open_errno.exchange(0, std::memory_order_relaxed);
34 if (value == 0) {
35 return {};
36 }
37
38 return {value, std::generic_category()};
39}
40
41inline auto consume_socket_bind_error() -> std::error_code {
42 auto value = socket_bind_errno.exchange(0, std::memory_order_relaxed);
43 if (value == 0) {
44 return {};
45 }
46
47 return {value, std::generic_category()};
48}
49
50inline auto consume_gate_wait_error() -> std::error_code {
51 auto value = gate_wait_errno.exchange(0, std::memory_order_relaxed);
52 if (value == 0) {
53 return {};
54 }
55
56 return {value, std::generic_category()};
57}
58
59} // namespace rtaco::test_hooks
60} // namespace llmx
Definition nl_test_hooks.hxx:8
void fail_gate_wait_once(std::errc code)
Definition nl_test_hooks.hxx:28
void fail_socket_open_once(std::errc code)
Definition nl_test_hooks.hxx:20
std::atomic_int gate_wait_errno
Definition nl_test_hooks.hxx:12
void fail_socket_bind_once(std::errc code)
Definition nl_test_hooks.hxx:24
auto consume_gate_wait_error() -> std::error_code
Definition nl_test_hooks.hxx:50
std::atomic_int socket_open_errno
Definition nl_test_hooks.hxx:10
auto consume_socket_bind_error() -> std::error_code
Definition nl_test_hooks.hxx:41
auto consume_socket_open_error() -> std::error_code
Definition nl_test_hooks.hxx:32
std::atomic_int socket_bind_errno
Definition nl_test_hooks.hxx:11
void reset()
Definition nl_test_hooks.hxx:14
Definition nl_common.hxx:21