VertexDataPage¶
-
class
VertexDataPage
¶ Bases:
SimpleAllocator
,SimpleLruPage
A block of bytes that holds one or more
VertexDataBlocks
. The entire page may be paged out, in the form of in-memory compression or to an on-disk cache file, if necessary.Inheritance diagram
-
enum
RamClass
¶ These are used to indicate the current residency state of the page, which may or may not have been temporarily evicted to satisfy memory requirements.
-
enumerator
RC_resident
= 0¶
-
enumerator
RC_compressed
= 1¶
-
enumerator
RC_disk
= 2¶
-
enumerator
RC_end_of_list
= 3¶ list marker; do not use
-
enumerator
-
VertexDataBlock *
alloc
(std::size_t size)¶ Allocates a new block. Returns NULL if a block of the requested size cannot be allocated.
To free the allocated block, call block->free(), or simply delete the block pointer.
-
static void
flush_threads
(void)¶ Waits for all of the pending thread tasks to finish before returning.
-
VertexDataBook *
get_book
(void) const¶ Returns a pointer to the book that owns this page.
-
static TypeHandle
get_class_type
(void)¶
-
VertexDataBlock *
get_first_block
(void) const¶ Returns a pointer to the first allocated block, or NULL if there are no allocated blocks.
-
SimpleLru *
get_global_lru
(VertexDataPage::RamClass rclass)¶ Returns a pointer to the global LRU object that manages the VertexDataPage’s with the indicated
RamClass
.
-
int
get_num_pending_reads
(void)¶ Returns the number of read requests that are waiting to be serviced by a thread.
-
int
get_num_pending_writes
(void)¶ Returns the number of write requests that are waiting to be serviced by a thread.
-
int
get_num_threads
(void)¶ Returns the number of threads that have been spawned to service vertex paging requests, or 0 if no threads have been spawned (which may mean either that all paging requests will be handled by the main thread, or simply that no paging requests have yet been issued).
-
SimpleLru *
get_pending_lru
(void)¶ Returns a pointer to the global LRU object that manages the VertexDataPage’s that are pending processing by the thread.
-
RamClass
get_pending_ram_class
(void) const¶ Returns the pending ram class of the array. If this is different from
get_ram_class()
, this page has been queued to be processed by the thread. Eventually the page will be set to this ram class.
-
RamClass
get_ram_class
(void) const¶ Returns the current ram class of the array. If this is other than RC_resident, the array data is not resident in memory.
-
VertexDataSaveFile *
get_save_file
(void)¶ Returns the global
VertexDataSaveFile
that will be used to save vertex data buffers to disk when necessary.
-
virtual void
output
(std::ostream &out) const¶
-
void
request_resident
(void)¶ Ensures that the page will become resident soon. Future calls to get_page_data() will eventually return non-NULL.
-
bool
save_to_disk
(void)¶ Writes the page to disk, but does not evict it from memory or affect its LRU status. If it gets evicted later without having been modified, it will not need to write itself to disk again.
-
static void
stop_threads
(void)¶ Call this to stop the paging threads, if they were started. This may block until all of the pending tasks have been completed.
-
virtual void
write
(std::ostream &out, int indent_level) const¶
-
enum