OGLplus  (0.59.0) a C++ wrapper for rendering APIs

system_info.hpp
Go to the documentation of this file.
1 #ifndef EAGINE_SYSTEM_INFO_HPP
9 #define EAGINE_SYSTEM_INFO_HPP
10 
11 #include "config/basic.hpp"
12 #include "config/platform.hpp"
13 #include "main_ctx_object.hpp"
14 #include "quantities.hpp"
15 #include "types.hpp"
16 #include "valid_if/ge0_le1.hpp"
17 #include "valid_if/nonnegative.hpp"
18 #include "valid_if/not_empty.hpp"
19 #include "valid_if/positive.hpp"
20 #include <chrono>
21 #include <cstdint>
22 #include <memory>
23 #include <string>
24 #include <thread>
25 
26 namespace eagine {
27 
28 class system_info_impl;
29 
32 class system_info : public main_ctx_object {
33 public:
35  using host_id_type = std::uint32_t;
36 
37  system_info(main_ctx_parent parent) noexcept
38  : main_ctx_object{EAGINE_ID(SystemInfo), parent} {}
39 
41  auto preinitialize() noexcept -> system_info&;
42 
44  auto host_id() noexcept -> valid_if_positive<host_id_type>;
45 
47  auto hostname() noexcept -> valid_if_not_empty<std::string>;
48 
50  auto uptime() noexcept -> std::chrono::duration<float>;
51 
54  return {span_size(std::thread::hardware_concurrency())};
55  }
56 
59 
61  auto short_average_load() noexcept -> valid_if_nonnegative<float>;
62 
64  auto long_average_load() noexcept -> valid_if_nonnegative<float>;
65 
68 
70  auto free_ram_size() noexcept -> valid_if_positive<span_size_t>;
71 
73  auto total_ram_size() noexcept -> valid_if_positive<span_size_t>;
74 
77 
80 
82  auto thermal_sensor_count() noexcept -> span_size_t;
83 
85  auto sensor_temperature(span_size_t) noexcept
86  -> valid_if_positive<kelvins_t<float>>;
87 
89  auto cpu_temperature() noexcept -> valid_if_positive<kelvins_t<float>>;
90 
92  auto gpu_temperature() noexcept -> valid_if_positive<kelvins_t<float>>;
93 
95  auto cooling_device_count() noexcept -> span_size_t;
96 
98  auto cooling_device_state(span_size_t) noexcept
99  -> valid_if_between_0_1<float>;
100 
102  auto battery_count() noexcept -> span_size_t;
103 
105  auto battery_capacity(span_size_t) noexcept -> valid_if_between_0_1<float>;
106 
107 private:
108  std::shared_ptr<system_info_impl> _pimpl;
109  auto _impl() noexcept -> system_info_impl*;
110 };
111 
112 } // namespace eagine
113 
114 #if !EAGINE_LINK_LIBRARY || defined(EAGINE_IMPLEMENTING_LIBRARY)
115 #include <eagine/system_info.inl>
116 #endif
117 
118 #endif // EAGINE_SYSTEM_INFO_HPP
Helper class used to initialize main context objects.
Definition: main_ctx_object.hpp:45
auto total_ram_size() noexcept -> valid_if_positive< span_size_t >
Returns total RAM size.
auto current_processes() noexcept -> valid_if_positive< span_size_t >
Returns the number of running processes.
std::ptrdiff_t span_size_t
Signed span size type used by eagine.
Definition: types.hpp:36
valid_if< T, valid_if_positive_policy< T > > valid_if_positive
Specialization of valid_if, for values valid if positive.
Definition: positive.hpp:44
#define EAGINE_ID(NAME)
Macro for constructing instances of eagine::identifier.
Definition: identifier.hpp:353
static constexpr auto span_size(T v) noexcept
Converts argument to span size type.
Definition: types.hpp:59
Base class for main context objects.
Definition: main_ctx_object.hpp:71
Common code is placed in this namespace.
Definition: eagine.hpp:21
std::uint32_t host_id_type
Alias for host id type.
Definition: system_info.hpp:35
auto short_average_load() noexcept -> valid_if_nonnegative< float >
Returns the short-term average system load in range (0.0, 1.0).
auto preinitialize() noexcept -> system_info &
Do potentially expensive pre-initialization and caching.
Primary template for conditionally valid values.
Definition: decl.hpp:49
auto cpu_temperature() noexcept -> valid_if_positive< kelvins_t< float >>
Returns the temperature on the CPU thermal sensor if present.
auto free_ram_size() noexcept -> valid_if_positive< span_size_t >
Returns free RAM size.
auto cooling_device_state(span_size_t) noexcept -> valid_if_between_0_1< float >
Returns the state of the i-th cooling device.
auto host_id() noexcept -> valid_if_positive< host_id_type >
Returns a unique numeric id of this host computer.
auto long_average_load() noexcept -> valid_if_nonnegative< float >
Returns the long-term average system load in range (0.0, 1.0).
auto sensor_temperature(span_size_t) noexcept -> valid_if_positive< kelvins_t< float >>
Returns the temperature on the i-th thermal sensor.
auto battery_count() noexcept -> span_size_t
Returns the count of batteries in the system.
auto cooling_device_count() noexcept -> span_size_t
Returns the number of cooling devices.
valid_if< T, valid_if_not_empty_policy< T > > valid_if_not_empty
Specialization of valid_if, for values valid if not empty.
Definition: not_empty.hpp:42
auto memory_page_size() noexcept -> valid_if_positive< span_size_t >
Returns the memory page size on this system.
auto battery_capacity(span_size_t) noexcept -> valid_if_between_0_1< float >
Returns the capacity of the i-th battery.
Class providing basic system information.
Definition: system_info.hpp:32
auto gpu_temperature() noexcept -> valid_if_positive< kelvins_t< float >>
Returns the temperature on the GPU thermal sensor if present.
auto cpu_concurrent_threads() noexcept -> valid_if_positive< span_size_t >
Returns the number of threads that can run concurrently.
Definition: system_info.hpp:53
auto hostname() noexcept -> valid_if_not_empty< std::string >
Returns the hostname.
auto thermal_sensor_count() noexcept -> span_size_t
Returns the number of system thermal sensors.
auto free_swap_size() noexcept -> valid_if_nonnegative< span_size_t >
Returns free swap size.
auto uptime() noexcept -> std::chrono::duration< float >
Returns the system uptime.
Value of type T with a specified unit or tag type U.
Definition: tagged_quantity.hpp:27
auto total_swap_size() noexcept -> valid_if_nonnegative< span_size_t >
Returns total swap size.

Copyright © 2015-2021 Matúš Chochlík.
<chochlik -at -gmail.com>
Documentation generated on Tue Apr 13 2021 by Doxygen (version 1.8.17).