join 1.0
lightweight network framework library
Loading...
Searching...
No Matches
io_policy.hpp
Go to the documentation of this file.
1
25#ifndef JOIN_CORE_IO_POLICY_HPP
26#define JOIN_CORE_IO_POLICY_HPP
27
28// C.
29#include <liburing.h>
30#include <cstdint>
31
32namespace join
33{
35 {
36 static constexpr uint32_t sqEntries = 1024;
37 static constexpr uint32_t flags = 0;
38 };
39
41 {
42 static constexpr uint32_t sqEntries = 1024;
43 static constexpr uint32_t flags = 0;
44 static constexpr uint64_t spinNs = 10'000;
45 static constexpr uint64_t yieldNs = 100'000;
46 static constexpr uint64_t sleepNs = 0;
47 static constexpr uint64_t tickNs = 100;
48 };
49
51 {
52 static constexpr uint32_t sqEntries = 1024;
53 static constexpr uint32_t flags = IORING_SETUP_SQPOLL;
54 static constexpr uint32_t sqThreadIdle = 2000;
55 static constexpr uint64_t spinNs = 10'000;
56 static constexpr uint64_t yieldNs = 100'000;
57 static constexpr uint64_t sleepNs = 0;
58 static constexpr uint64_t tickNs = 100;
59 };
60
61 template <typename T>
62 inline constexpr bool has_sqpoll_v = (T::flags & IORING_SETUP_SQPOLL) != 0;
63
64 template <typename T>
65 inline constexpr bool has_cq_entries_v = requires { T::cqEntries; };
66
67 template <typename T>
68 inline constexpr bool has_sq_thread_idle_v = requires { T::sqThreadIdle; };
69
70 template <typename T>
71 inline constexpr bool has_sq_thread_cpu_v = requires { T::sqThreadCpu; };
72
73 template <typename T>
74 inline constexpr bool has_spin_v = requires { T::spinNs; };
75
76 template <typename T>
77 inline constexpr bool is_default_v = !has_spin_v<T> && !has_sqpoll_v<T>;
78
79 template <typename T>
80 inline constexpr uint64_t spin_ns_v = 10'000;
81
82 template <typename T>
83 requires has_spin_v<T>
84 inline constexpr uint64_t spin_ns_v<T> = T::spinNs;
85
86 template <typename T>
87 inline constexpr bool has_yield_ns_v = requires { T::yieldNs; };
88
89 template <typename T>
90 inline constexpr uint64_t yield_ns_v = 100'000;
91
92 template <typename T>
93 requires has_yield_ns_v<T>
94 inline constexpr uint64_t yield_ns_v<T> = T::yieldNs;
95
96 template <typename T>
97 inline constexpr bool has_sleep_ns_v = requires { T::sleepNs; };
98
99 template <typename T>
100 inline constexpr uint64_t sleep_ns_v = 0;
101
102 template <typename T>
103 requires has_sleep_ns_v<T>
104 inline constexpr uint64_t sleep_ns_v<T> = T::sleepNs;
105
106 template <typename T>
107 inline constexpr bool has_tick_ns_v = requires { T::tickNs; };
108
109 template <typename T>
110 inline constexpr uint64_t tick_ns_v = 1'000;
111
112 template <typename T>
113 requires has_tick_ns_v<T>
114 inline constexpr uint64_t tick_ns_v<T> = T::tickNs;
115}
116
117#endif
Definition acceptor.hpp:32
constexpr bool has_cq_entries_v
Definition io_policy.hpp:65
constexpr bool has_sleep_ns_v
Definition io_policy.hpp:97
constexpr uint64_t yield_ns_v< T >
Definition io_policy.hpp:94
constexpr bool has_tick_ns_v
Definition io_policy.hpp:107
constexpr uint64_t spin_ns_v< T >
Definition io_policy.hpp:84
constexpr bool has_sq_thread_cpu_v
Definition io_policy.hpp:71
constexpr uint64_t spin_ns_v
Definition io_policy.hpp:80
constexpr bool has_yield_ns_v
Definition io_policy.hpp:87
constexpr uint64_t sleep_ns_v< T >
Definition io_policy.hpp:104
constexpr bool has_sq_thread_idle_v
Definition io_policy.hpp:68
constexpr uint64_t sleep_ns_v
Definition io_policy.hpp:100
constexpr bool has_spin_v
Definition io_policy.hpp:74
constexpr uint64_t tick_ns_v< T >
Definition io_policy.hpp:114
constexpr bool is_default_v
Definition io_policy.hpp:77
constexpr bool has_sqpoll_v
Definition io_policy.hpp:62
constexpr uint64_t tick_ns_v
Definition io_policy.hpp:110
constexpr uint64_t yield_ns_v
Definition io_policy.hpp:90
Definition io_policy.hpp:35
static constexpr uint32_t sqEntries
Definition io_policy.hpp:36
static constexpr uint32_t flags
Definition io_policy.hpp:37
Definition io_policy.hpp:41
static constexpr uint32_t sqEntries
Definition io_policy.hpp:42
static constexpr uint64_t sleepNs
Definition io_policy.hpp:46
static constexpr uint64_t yieldNs
Definition io_policy.hpp:45
static constexpr uint64_t spinNs
Definition io_policy.hpp:44
static constexpr uint64_t tickNs
Definition io_policy.hpp:47
static constexpr uint32_t flags
Definition io_policy.hpp:43
Definition io_policy.hpp:51
static constexpr uint32_t flags
Definition io_policy.hpp:53
static constexpr uint64_t yieldNs
Definition io_policy.hpp:56
static constexpr uint64_t spinNs
Definition io_policy.hpp:55
static constexpr uint64_t sleepNs
Definition io_policy.hpp:57
static constexpr uint32_t sqEntries
Definition io_policy.hpp:52
static constexpr uint64_t tickNs
Definition io_policy.hpp:58
static constexpr uint32_t sqThreadIdle
Definition io_policy.hpp:54