TPIE

11a2c2d
tpie::resource_manager Class Referenceabstract

Resource management object used to track resource usage. More...

#include <tpie/resource_manager.h>

Inherited by tpie::file_manager, and tpie::memory_manager.

Public Types

enum  enforce_t { ENFORCE_IGNORE, ENFORCE_DEBUG, ENFORCE_WARN, ENFORCE_THROW }
 Memory limit enforcement policies. More...
 

Public Member Functions

size_t used () const noexcept
 Return the current amount of the resource used. More...
 
size_t available () const noexcept
 Return the amount of the resource still available to be assigned. More...
 
size_t limit () const noexcept
 Return the resource limit. More...
 
void set_limit (size_t new_limit)
 Update the resource limit. More...
 
void set_enforcement (enforce_t e)
 Set the resource limit enforcement policy. More...
 
enforce_t enforcement () const noexcept
 Return the current resource limit enforcement policy. More...
 
void register_increased_usage (size_t amount)
 
void register_decreased_usage (size_t amount)
 
virtual std::string amount_with_unit (size_t amount) const
 
 resource_manager (resource_type type)
 

Protected Member Functions

virtual void throw_out_of_resource_error (const std::string &s)=0
 

Protected Attributes

std::atomic< size_t > m_used
 
size_t m_limit
 
size_t m_maxExceeded
 
size_t m_nextWarning
 
enforce_t m_enforce
 
resource_type resource_managed
 

Detailed Description

Resource management object used to track resource usage.

Definition at line 38 of file resource_manager.h.

Member Enumeration Documentation

◆ enforce_t

Memory limit enforcement policies.

Enumerator
ENFORCE_IGNORE 

Ignore when running out of the resource.

ENFORCE_DEBUG 

Log to debug log when the resource limit is exceeded.

Note that not all violations will be logged.

ENFORCE_WARN 

Log a warning when the resource limit is exceeded.

Note that not all violations will be logged.

ENFORCE_THROW 

Throw an out_of_resource_error when the resource limit is exceeded.

Definition at line 43 of file resource_manager.h.

43  {
54  };

Constructor & Destructor Documentation

◆ resource_manager()

tpie::resource_manager::resource_manager ( resource_type  type)

Construct the resource manager object.

Member Function Documentation

◆ available()

size_t tpie::resource_manager::available ( ) const
noexcept

Return the amount of the resource still available to be assigned.

Referenced by tpie::ami::stream_old< T >::available_streams().

◆ enforcement()

enforce_t tpie::resource_manager::enforcement ( ) const
inlinenoexcept

Return the current resource limit enforcement policy.

Definition at line 88 of file resource_manager.h.

88 {return m_enforce;}

◆ limit()

size_t tpie::resource_manager::limit ( ) const
inlinenoexcept

Return the resource limit.

Definition at line 69 of file resource_manager.h.

69 {return m_limit;}

◆ set_enforcement()

void tpie::resource_manager::set_enforcement ( enforce_t  e)

Set the resource limit enforcement policy.

Parameters
eThe new enforcement policy.

◆ set_limit()

void tpie::resource_manager::set_limit ( size_t  new_limit)

Update the resource limit.

If the resource limit is exceeded by decreasing the limit, no exception will be thrown.

Parameters
new_limitThe new resource limit.

◆ used()

size_t tpie::resource_manager::used ( ) const
noexcept

Return the current amount of the resource used.


The documentation for this class was generated from the following file:
tpie::resource_manager::ENFORCE_DEBUG
@ ENFORCE_DEBUG
Log to debug log when the resource limit is exceeded.
Definition: resource_manager.h:48
tpie::resource_manager::ENFORCE_WARN
@ ENFORCE_WARN
Log a warning when the resource limit is exceeded.
Definition: resource_manager.h:51
tpie::resource_manager::ENFORCE_THROW
@ ENFORCE_THROW
Throw an out_of_resource_error when the resource limit is exceeded.
Definition: resource_manager.h:53
tpie::resource_manager::ENFORCE_IGNORE
@ ENFORCE_IGNORE
Ignore when running out of the resource.
Definition: resource_manager.h:45