9 #ifndef EAGINE_MESSAGE_BUS_SERVICE_SYSTEM_INFO_HPP
10 #define EAGINE_MESSAGE_BUS_SERVICE_SYSTEM_INFO_HPP
12 #include "../../bool_aggregate.hpp"
13 #include "../../main_ctx.hpp"
14 #include "../../maybe_unused.hpp"
15 #include "../service.hpp"
21 template <
typename Base = subscriber>
22 class system_info_provider :
public Base {
30 Base::add_method(_uptime(
36 Base::add_method(_cpu_concurrent_threads(
41 cpu_concurrent_threads))[
EAGINE_MSG_ID(eagiSysInf, rqCpuThrds)]);
43 Base::add_method(_short_average_load(
50 Base::add_method(_long_average_load(
57 Base::add_method(_memory_page_size(
64 Base::add_method(_free_ram_size(
71 Base::add_method(_total_ram_size(
78 Base::add_method(_free_swap_size(
85 Base::add_method(_total_swap_size(
94 default_function_skeleton<std::chrono::duration<float>() noexcept, 32>
98 _cpu_concurrent_threads;
122 template <typename Base = subscriber>
123 class system_info_consumer : public Base {
131 Base::add_method(_uptime(
136 Base::add_method(_cpu_concurrent_threads(
140 Base::add_method(_short_average_load(
143 eagiSysInf, shortLoad)]);
145 Base::add_method(_long_average_load(
148 eagiSysInf, longLoad)]);
150 Base::add_method(_memory_page_size(
153 eagiSysInf, memPageSz)]);
155 Base::add_method(_free_ram_size(
158 on_free_ram_size_received))[
EAGINE_MSG_ID(eagiSysInf, freeRamSz)]);
160 Base::add_method(_total_ram_size(
163 on_total_ram_size_received))[
EAGINE_MSG_ID(eagiSysInf, totalRamSz)]);
165 Base::add_method(_free_swap_size(
168 on_free_swap_size_received))[
EAGINE_MSG_ID(eagiSysInf, freeSwpSz)]);
170 Base::add_method(_total_swap_size(
173 eagiSysInf, totalSwpSz)]);
183 on_uptime_received(
const result_context&, std::chrono::duration<float>&&) {}
185 void query_cpu_concurrent_threads(
identifier_t endpoint_id) {
186 _cpu_concurrent_threads.invoke_on(
190 virtual void on_cpu_concurrent_threads_received(
191 const result_context&,
192 valid_if_positive<span_size_t>&&) {}
194 void query_short_average_load(
identifier_t endpoint_id) {
195 _short_average_load.invoke_on(
199 virtual void on_short_average_load_received(
200 const result_context&,
201 valid_if_nonnegative<float>&&) {}
203 void query_long_average_load(
identifier_t endpoint_id) {
204 _long_average_load.invoke_on(
208 virtual void on_long_average_load_received(
209 const result_context&,
210 valid_if_nonnegative<float>&&) {}
213 _memory_page_size.invoke_on(
217 virtual void on_memory_page_size_received(
218 const result_context&,
219 valid_if_positive<span_size_t>&&) {}
222 _free_ram_size.invoke_on(
226 virtual void on_free_ram_size_received(
227 const result_context&,
228 valid_if_positive<span_size_t>&&) {}
231 _total_ram_size.invoke_on(
235 virtual void on_total_ram_size_received(
236 const result_context&,
237 valid_if_positive<span_size_t>&&) {}
240 _free_swap_size.invoke_on(
244 virtual void on_free_swap_size_received(
245 const result_context&,
246 valid_if_nonnegative<span_size_t>&&) {}
249 _total_swap_size.invoke_on(
253 virtual void on_total_swap_size_received(
254 const result_context&,
255 valid_if_nonnegative<span_size_t>&&) {}
258 default_callback_invoker<std::chrono::duration<float>(), 32> _uptime;
260 default_callback_invoker<valid_if_positive<span_size_t>(), 32>
261 _cpu_concurrent_threads;
263 default_callback_invoker<valid_if_nonnegative<float>(), 32>
266 default_callback_invoker<valid_if_nonnegative<float>(), 32>
269 default_callback_invoker<valid_if_positive<span_size_t>(), 32>
272 default_callback_invoker<valid_if_positive<span_size_t>(), 32>
275 default_callback_invoker<valid_if_positive<span_size_t>(), 32>
278 default_callback_invoker<valid_if_nonnegative<span_size_t>(), 32>
281 default_callback_invoker<valid_if_nonnegative<span_size_t>(), 32>
287 #endif // EAGINE_MESSAGE_BUS_SERVICE_SYSTEM_INFO_HPP