Stxxl  1.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Classes | Public Types | Public Member Functions | Protected Types | Protected Attributes
stxxl::prefetch_pool< BlockType > Class Template Reference

Implements dynamically resizable prefetching pool. More...

#include <prefetch_pool.h>

Inheritance diagram for stxxl::prefetch_pool< BlockType >:
Inheritance graph
[legend]
Collaboration diagram for stxxl::prefetch_pool< BlockType >:
Collaboration graph
[legend]

List of all members.

Classes

struct  bid_hash

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.
void swap (prefetch_pool &obj)
virtual ~prefetch_pool ()
 Waits for completion of all ongoing read requests and frees memory.
unsigned_type size () const
 Returns number of owned blocks.
bool hint (bid_type bid)
 Gives a hint for prefetching a block.
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.
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.

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 stxxl::prefetch_pool< BlockType >

Implements dynamically resizable prefetching pool.

Examples:
mng/test_pool_pair.cpp, and mng/test_prefetch_pool.cpp.

Definition at line 34 of file prefetch_pool.h.


Member Typedef Documentation

template<class BlockType>
typedef block_type::bid_type stxxl::prefetch_pool< BlockType >::bid_type

Definition at line 38 of file prefetch_pool.h.

template<class BlockType>
typedef BlockType stxxl::prefetch_pool< BlockType >::block_type

Definition at line 37 of file prefetch_pool.h.

template<class BlockType>
typedef hash_map_type::iterator stxxl::prefetch_pool< BlockType >::busy_blocks_iterator [protected]

Definition at line 64 of file prefetch_pool.h.

template<class BlockType>
typedef std::pair<block_type *, request_ptr> stxxl::prefetch_pool< BlockType >::busy_entry [protected]

Definition at line 61 of file prefetch_pool.h.

template<class BlockType>
typedef std::list<block_type *>::iterator stxxl::prefetch_pool< BlockType >::free_blocks_iterator [protected]

Definition at line 63 of file prefetch_pool.h.

template<class BlockType>
typedef compat_hash_map<bid_type, busy_entry, bid_hash>::result stxxl::prefetch_pool< BlockType >::hash_map_type [protected]

Definition at line 62 of file prefetch_pool.h.


Constructor & Destructor Documentation

template<class BlockType>
stxxl::prefetch_pool< BlockType >::prefetch_pool ( unsigned_type  init_size = 1) [inline, explicit]

Constructs pool.

Parameters:
init_sizeinitial number of blocks in the pool

Definition at line 76 of file prefetch_pool.h.

template<class BlockType>
virtual stxxl::prefetch_pool< BlockType >::~prefetch_pool ( ) [inline, virtual]

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

Definition at line 91 of file prefetch_pool.h.


Member Function Documentation

template<class BlockType>
bool stxxl::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

Definition at line 121 of file prefetch_pool.h.

Referenced by main().

template<class BlockType>
bool stxxl::prefetch_pool< BlockType >::hint ( bid_type  bid,
write_pool< block_type > &  w_pool 
) [inline]
template<class BlockType>
bool stxxl::prefetch_pool< BlockType >::in_prefetching ( bid_type  bid) [inline]

Definition at line 192 of file prefetch_pool.h.

template<class BlockType>
bool stxxl::prefetch_pool< BlockType >::invalidate ( bid_type  bid) [inline]

Definition at line 174 of file prefetch_pool.h.

Referenced by main().

template<class BlockType>
request_ptr stxxl::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

Definition at line 203 of file prefetch_pool.h.

Referenced by main().

template<class BlockType>
request_ptr stxxl::prefetch_pool< BlockType >::read ( block_type *&  block,
bid_type  bid,
write_pool< block_type > &  w_pool 
) [inline]
template<class BlockType>
unsigned_type stxxl::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

Definition at line 261 of file prefetch_pool.h.

Referenced by main().

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

Returns number of owned blocks.

Definition at line 112 of file prefetch_pool.h.

template<class BlockType>
void stxxl::prefetch_pool< BlockType >::swap ( prefetch_pool< BlockType > &  obj) [inline]

Member Data Documentation

template<class BlockType>
hash_map_type stxxl::prefetch_pool< BlockType >::busy_blocks [protected]

Definition at line 69 of file prefetch_pool.h.

Referenced by stxxl::prefetch_pool< BlockType >::swap().

template<class BlockType>
std::list<block_type *> stxxl::prefetch_pool< BlockType >::free_blocks [protected]

Definition at line 67 of file prefetch_pool.h.

Referenced by stxxl::prefetch_pool< BlockType >::swap().

template<class BlockType>
unsigned_type stxxl::prefetch_pool< BlockType >::free_blocks_size [protected]

Definition at line 71 of file prefetch_pool.h.

Referenced by stxxl::prefetch_pool< BlockType >::swap().


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines