25 #ifndef __TPIE_RESOURCE_MANAGER_H__
26 #define __TPIE_RESOURCE_MANAGER_H__
28 #include <tpie/config.h>
32 #include <unordered_map>
33 #include <type_traits>
67 size_t used() const noexcept;
77 size_t limit() const noexcept {
return m_limit;}
98 void register_increased_usage(
size_t amount);
100 void register_decreased_usage(
size_t amount);
102 virtual std::string amount_with_unit(
size_t amount)
const {
103 std::ostringstream os;
104 os << amount <<
" amount of " << resource_managed;
117 void print_resource_complaint(std::ostream & os,
size_t amount,
size_t usage);
119 virtual void throw_out_of_resource_error(
const std::string & s) = 0;
121 std::atomic<size_t> m_used;
123 size_t m_maxExceeded;
124 size_t m_nextWarning;
127 resource_type resource_managed;
132 #endif //__TPIE_RESOURCE_MANAGER_H__
Resource management object used to track resource usage.
Defines all types of managed resources.
Log a warning when the resource limit is exceeded.
Throw an out_of_resource_error when the resource limit is exceeded.
Miscellaneous utility functions.
void set_limit(size_t new_limit)
Update the resource limit.
size_t available() const noexcept
Return the amount of the resource still available to be assigned.
resource_manager(resource_type type)
size_t limit() const noexcept
Return the resource limit.
void set_enforcement(enforce_t e)
Set the resource limit enforcement policy.
size_t used() const noexcept
Return the current amount of the resource used.
enforce_t enforcement() const noexcept
Return the current resource limit enforcement policy.
Log to debug log when the resource limit is exceeded.
Ignore when running out of the resource.
enforce_t
Memory limit enforcement policies.