Panda3D
Public Member Functions | Static Public Attributes | Friends | List of all members
SimpleLru Class Reference

An implementation of a very simple LRU algorithm. More...

#include "simpleLru.h"

Inheritance diagram for SimpleLru:
LinkedListNode Namable MemoryBase

Public Member Functions

 SimpleLru (const std::string &name, size_t max_size)
 
void begin_epoch ()
 Marks the end of the previous epoch and the beginning of the next one. More...
 
void consider_evict ()
 Evicts a sequence of objects if the queue is full. More...
 
size_t count_active_size () const
 Returns the total size of the pages that were enqueued since the last call to begin_epoch(). More...
 
void evict_to (size_t target_size)
 Evicts a sequence of objects until the queue fits within the indicated target size, regardless of its normal max size. More...
 
size_t get_max_size () const
 Returns the max size of all objects that are allowed to be active on the LRU. More...
 
size_t get_total_size () const
 Returns the total size of all objects currently active on the LRU. More...
 
void output (std::ostream &out) const
 
void set_max_size (size_t max_size)
 Changes the max size of all objects that are allowed to be active on the LRU. More...
 
bool validate ()
 Checks that the LRU is internally self-consistent. More...
 
void write (std::ostream &out, int indent_level) const
 
- Public Member Functions inherited from Namable
 Namable (const std::string &initial_name="")
 
void clear_name ()
 Resets the Namable's name to empty. More...
 
const std::string & get_name () const
 
bool has_name () const
 Returns true if the Namable has a nonempty name set, false if the name is empty. More...
 
void output (std::ostream &out) const
 Outputs the Namable. More...
 
void set_name (const std::string &name)
 

Static Public Attributes

static LightMutex_global_lock = *new LightMutex
 

Friends

class SimpleLruPage
 

Additional Inherited Members

- Static Public Member Functions inherited from Namable
static TypeHandle get_class_type ()
 
static void init_type ()
 
- Public Attributes inherited from Namable
 get_name
 
 set_name
 

Detailed Description

An implementation of a very simple LRU algorithm.

Also see AdaptiveLru.

Definition at line 28 of file simpleLru.h.

Member Function Documentation

◆ begin_epoch()

void SimpleLru::begin_epoch ( )
inline

Marks the end of the previous epoch and the beginning of the next one.

This will evict any objects that are pending eviction, and also update any internal bookkeeping.

Definition at line 77 of file simpleLru.I.

References consider_evict(), and SimpleLruPage::enqueue_lru().

Referenced by GeomVertexArrayData::lru_epoch().

◆ consider_evict()

void SimpleLru::consider_evict ( )
inline

Evicts a sequence of objects if the queue is full.

Definition at line 52 of file simpleLru.I.

Referenced by begin_epoch().

◆ count_active_size()

size_t SimpleLru::count_active_size ( ) const

Returns the total size of the pages that were enqueued since the last call to begin_epoch().

Definition at line 97 of file simpleLru.cxx.

◆ evict_to()

void SimpleLru::evict_to ( size_t  target_size)
inline

Evicts a sequence of objects until the queue fits within the indicated target size, regardless of its normal max size.

Definition at line 64 of file simpleLru.I.

◆ get_max_size()

size_t SimpleLru::get_max_size ( ) const
inline

Returns the max size of all objects that are allowed to be active on the LRU.

Definition at line 28 of file simpleLru.I.

◆ get_total_size()

size_t SimpleLru::get_total_size ( ) const
inline

Returns the total size of all objects currently active on the LRU.

Definition at line 18 of file simpleLru.I.

◆ set_max_size()

void SimpleLru::set_max_size ( size_t  max_size)
inline

Changes the max size of all objects that are allowed to be active on the LRU.

If the size is (size_t)-1, there is no limit.

Definition at line 40 of file simpleLru.I.

◆ validate()

bool SimpleLru::validate ( )
inline

Checks that the LRU is internally self-consistent.

Returns true if successful, false if there is some problem.

Definition at line 87 of file simpleLru.I.


The documentation for this class was generated from the following files: