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

Implements dynamically resizable buffered writing and prefetched reading pool. More...

#include <read_write_pool.h>

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

List of all members.

Public Types

typedef BlockType block_type
typedef block_type::bid_type bid_type
typedef unsigned_type size_type

Public Member Functions

 read_write_pool (size_type init_size_prefetch=1, size_type init_size_write=1)
 Constructs pool.
 _STXXL_DEPRECATED (read_write_pool(prefetch_pool_type &p_pool, write_pool_type &w_pool))
void swap (read_write_pool &obj)
virtual ~read_write_pool ()
 Waits for completion of all ongoing requests and frees memory.
size_type size_write () const
 Returns number of blocks owned by the write_pool.
size_type size_prefetch () const
 Returns number of blocks owned by the prefetch_pool.
void resize_write (size_type new_size)
 Resizes size of the pool.
void resize_prefetch (size_type new_size)
 Resizes size of the pool.
request_ptr write (block_type *&block, bid_type bid)
 Passes a block to the pool for writing.
block_typesteal ()
 Take out a block from the pool.
void add (block_type *&block)
bool hint (bid_type bid)
 Gives a hint for prefetching a block.
bool invalidate (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.

Protected Types

typedef write_pool< block_typewrite_pool_type
typedef prefetch_pool< block_typeprefetch_pool_type

Protected Attributes

write_pool_typew_pool
prefetch_pool_typep_pool
bool delete_pools

Detailed Description

template<typename BlockType>
class stxxl::read_write_pool< BlockType >

Implements dynamically resizable buffered writing and prefetched reading pool.

Examples:
containers/stack_benchmark.cpp, containers/test_pqueue.cpp, containers/test_stack.cpp, and mng/test_read_write_pool.cpp.

Definition at line 28 of file read_write_pool.h.


Member Typedef Documentation

template<typename BlockType>
typedef block_type::bid_type stxxl::read_write_pool< BlockType >::bid_type

Definition at line 32 of file read_write_pool.h.

template<typename BlockType>
typedef BlockType stxxl::read_write_pool< BlockType >::block_type

Definition at line 31 of file read_write_pool.h.

template<typename BlockType>
typedef prefetch_pool<block_type> stxxl::read_write_pool< BlockType >::prefetch_pool_type [protected]

Definition at line 37 of file read_write_pool.h.

template<typename BlockType>
typedef unsigned_type stxxl::read_write_pool< BlockType >::size_type

Definition at line 33 of file read_write_pool.h.

template<typename BlockType>
typedef write_pool<block_type> stxxl::read_write_pool< BlockType >::write_pool_type [protected]

Definition at line 36 of file read_write_pool.h.


Constructor & Destructor Documentation

template<typename BlockType>
stxxl::read_write_pool< BlockType >::read_write_pool ( size_type  init_size_prefetch = 1,
size_type  init_size_write = 1 
) [inline, explicit]

Constructs pool.

Parameters:
init_size_prefetchinitial number of blocks in the prefetch pool
init_size_writeinitial number of blocks in the write pool

Definition at line 47 of file read_write_pool.h.

template<typename BlockType>
virtual stxxl::read_write_pool< BlockType >::~read_write_pool ( ) [inline, virtual]

Waits for completion of all ongoing requests and frees memory.

Definition at line 66 of file read_write_pool.h.


Member Function Documentation

template<typename BlockType>
stxxl::read_write_pool< BlockType >::_STXXL_DEPRECATED ( read_write_pool< BlockType >(prefetch_pool_type &p_pool, write_pool_type &w_pool ) [inline]

Definition at line 54 of file read_write_pool.h.

template<typename BlockType>
void stxxl::read_write_pool< BlockType >::add ( block_type *&  block) [inline]

Definition at line 121 of file read_write_pool.h.

Referenced by main().

template<typename BlockType>
bool stxxl::read_write_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 135 of file read_write_pool.h.

Referenced by main(), and stxxl::priority_queue_local::ext_merger< BlockType_, Cmp_, Arity_, AllocStr_ >::multi_merge().

template<typename BlockType>
bool stxxl::read_write_pool< BlockType >::invalidate ( bid_type  bid) [inline]

Definition at line 140 of file read_write_pool.h.

template<typename BlockType>
request_ptr stxxl::read_write_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 151 of file read_write_pool.h.

Referenced by main(), and stxxl::priority_queue_local::ext_merger< BlockType_, Cmp_, Arity_, AllocStr_ >::multi_merge().

template<typename BlockType>
void stxxl::read_write_pool< BlockType >::resize_prefetch ( size_type  new_size) [inline]

Resizes size of the pool.

Parameters:
new_sizenew size of the pool after the call

Definition at line 89 of file read_write_pool.h.

Referenced by stxxl::random_shuffle().

template<typename BlockType>
void stxxl::read_write_pool< BlockType >::resize_write ( size_type  new_size) [inline]

Resizes size of the pool.

Parameters:
new_sizenew size of the pool after the call

Definition at line 82 of file read_write_pool.h.

Referenced by stxxl::random_shuffle().

template<typename BlockType>
size_type stxxl::read_write_pool< BlockType >::size_prefetch ( ) const [inline]

Returns number of blocks owned by the prefetch_pool.

Definition at line 78 of file read_write_pool.h.

template<typename BlockType>
size_type stxxl::read_write_pool< BlockType >::size_write ( ) const [inline]

Returns number of blocks owned by the write_pool.

Definition at line 75 of file read_write_pool.h.

Referenced by stxxl::priority_queue_local::ext_merger< BlockType_, Cmp_, Arity_, AllocStr_ >::insert_segment().

template<typename BlockType>
block_type* stxxl::read_write_pool< BlockType >::steal ( ) [inline]

Take out a block from the pool.

Returns:
pointer to the block. Ownership of the block goes to the caller.

Definition at line 116 of file read_write_pool.h.

Referenced by stxxl::priority_queue_local::ext_merger< BlockType_, Cmp_, Arity_, AllocStr_ >::insert_segment(), and main().

template<typename BlockType>
void stxxl::read_write_pool< BlockType >::swap ( read_write_pool< BlockType > &  obj) [inline]
template<typename BlockType>
request_ptr stxxl::read_write_pool< BlockType >::write ( block_type *&  block,
bid_type  bid 
) [inline]

Passes a block to the pool for writing.

Parameters:
blockblock to write. Ownership of the block goes to the pool. block must be allocated dynamically with using new .
bidlocation, where to write
Warning:
block must be allocated dynamically with using new .
Returns:
request object of the write operation

Definition at line 102 of file read_write_pool.h.

Referenced by stxxl::priority_queue_local::ext_merger< BlockType_, Cmp_, Arity_, AllocStr_ >::insert_segment(), and main().


Member Data Documentation

template<typename BlockType>
bool stxxl::read_write_pool< BlockType >::delete_pools [protected]

Definition at line 41 of file read_write_pool.h.

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

template<typename BlockType>
prefetch_pool_type* stxxl::read_write_pool< BlockType >::p_pool [protected]

Definition at line 40 of file read_write_pool.h.

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

template<typename BlockType>
write_pool_type* stxxl::read_write_pool< BlockType >::w_pool [protected]

Definition at line 39 of file read_write_pool.h.

Referenced by stxxl::read_write_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