Stxxl  1.3.2
Public Types | Public Member Functions | Protected Types | Protected Attributes | List of all members
prefetch_pool< BlockType > Class Template Reference

Implements dynamically resizable prefetching pool. More...

#include <prefetch_pool.h>

Inherits noncopyable.

Public Types

typedef BlockType block_type
 
typedef block_type::bid_type bid_type
 

Public Member Functions

 prefetch_pool (unsigned_type init_size=1)
 Constructs pool. More...
 
void swap (prefetch_pool &obj)
 
virtual ~prefetch_pool ()
 Waits for completion of all ongoing read requests and frees memory. More...
 
unsigned_type size () const
 Returns number of owned blocks. More...
 
bool hint (bid_type bid)
 Gives a hint for prefetching a block. More...
 
bool hint (bid_type bid, write_pool< block_type > &w_pool)
 
bool invalidate (bid_type bid)
 
bool in_prefetching (bid_type bid)
 
request_ptr read (block_type *&block, bid_type bid)
 Reads block. If this block is cached block is not read but passed from the cache. More...
 
request_ptr read (block_type *&block, bid_type bid, write_pool< block_type > &w_pool)
 
unsigned_type resize (unsigned_type new_size)
 Resizes size of the pool. More...
 

Protected Types

typedef std::pair< block_type
*, request_ptr
busy_entry
 
typedef compat_hash_map
< bid_type, busy_entry,
bid_hash >::result 
hash_map_type
 
typedef std::list< block_type * >
::iterator 
free_blocks_iterator
 
typedef hash_map_type::iterator busy_blocks_iterator
 

Protected Attributes

std::list< block_type * > free_blocks
 
hash_map_type busy_blocks
 
unsigned_type free_blocks_size
 

Detailed Description

template<class BlockType>
class prefetch_pool< BlockType >

Implements dynamically resizable prefetching pool.

Constructor & Destructor Documentation

template<class BlockType>
prefetch_pool< BlockType >::prefetch_pool ( unsigned_type  init_size = 1)
inlineexplicit

Constructs pool.

Parameters
init_sizeinitial number of blocks in the pool
template<class BlockType>
virtual prefetch_pool< BlockType >::~prefetch_pool ( )
inlinevirtual

Waits for completion of all ongoing read requests and frees memory.

Member Function Documentation

template<class BlockType>
bool prefetch_pool< BlockType >::hint ( bid_type  bid)
inline

Gives a hint for prefetching a block.

Parameters
bidaddress of a block to be prefetched
Returns
true if there was a free block to do prefetch and prefetching was scheduled, false otherwise
Note
If there are no free blocks available (all blocks are already in reading or read but not retrieved by user calling read method) calling hint function has no effect

Referenced by read_write_pool< BlockType >::hint(), and read_write_pool< BlockType >::write().

template<class BlockType>
request_ptr prefetch_pool< BlockType >::read ( block_type *&  block,
bid_type  bid 
)
inline

Reads block. If this block is cached block is not read but passed from the cache.

Parameters
blockblock object, where data to be read to. If block was cached block 's ownership goes to the pool and block from cache is returned in block value.
bidaddress of the block
Warning
block parameter must be allocated dynamically using new .
Returns
request pointer object of read operation

Referenced by read_write_pool< BlockType >::read().

template<class BlockType>
unsigned_type prefetch_pool< BlockType >::resize ( unsigned_type  new_size)
inline

Resizes size of the pool.

Parameters
new_sizedesired size of the pool. If some blocks are used for prefetching, these blocks can't be freed. Only free blocks (not in prefetching) can be freed by reducing the size of the pool calling this method.
Returns
new size of the pool

References prefetch_pool< BlockType >::size().

Referenced by read_write_pool< BlockType >::resize_prefetch().

template<class BlockType>
unsigned_type prefetch_pool< BlockType >::size ( ) const
inline

Returns number of owned blocks.

Referenced by prefetch_pool< BlockType >::resize(), and read_write_pool< BlockType >::size_prefetch().


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