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

Implements dynamically resizable buffered writing pool. More...

#include <write_pool.h>

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

List of all members.

Classes

struct  busy_entry

Public Types

typedef BlockType block_type
typedef block_type::bid_type bid_type
typedef std::list< block_type * >
::iterator 
free_blocks_iterator
typedef std::list< busy_entry >
::iterator 
busy_blocks_iterator

Public Member Functions

 write_pool (unsigned_type init_size=1)
 Constructs pool.
void swap (write_pool &obj)
virtual ~write_pool ()
 Waits for completion of all ongoing write requests and frees memory.
unsigned_type size () const
 Returns number of owned blocks.
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.
request_ptr steal_request (bid_type bid)
void add (block_type *&block)

Protected Member Functions

void check_all_busy ()

Protected Attributes

std::list< block_type * > free_blocks
std::list< busy_entrybusy_blocks

Detailed Description

template<class BlockType>
class stxxl::write_pool< BlockType >

Implements dynamically resizable buffered writing pool.

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

Definition at line 38 of file write_pool.h.


Member Typedef Documentation

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

Definition at line 42 of file write_pool.h.

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

Definition at line 41 of file write_pool.h.

template<class BlockType>
typedef std::list<busy_entry>::iterator stxxl::write_pool< BlockType >::busy_blocks_iterator

Definition at line 59 of file write_pool.h.

template<class BlockType>
typedef std::list<block_type *>::iterator stxxl::write_pool< BlockType >::free_blocks_iterator

Definition at line 58 of file write_pool.h.


Constructor & Destructor Documentation

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

Constructs pool.

Parameters:
init_sizeinitial number of blocks in the pool

Definition at line 70 of file write_pool.h.

References STXXL_VERBOSE_WPOOL.

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

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

Definition at line 86 of file write_pool.h.

References STXXL_VERBOSE_WPOOL.


Member Function Documentation

template<class BlockType>
void stxxl::write_pool< BlockType >::add ( block_type *&  block) [inline]
template<class BlockType>
void stxxl::write_pool< BlockType >::check_all_busy ( ) [inline, protected]

Definition at line 256 of file write_pool.h.

References STXXL_VERBOSE_WPOOL.

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

Returns number of owned blocks.

Definition at line 111 of file write_pool.h.

template<class BlockType>
block_type* stxxl::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 142 of file write_pool.h.

References STXXL_VERBOSE_WPOOL, and stxxl::wait_any().

Referenced by main().

template<class BlockType>
request_ptr stxxl::write_pool< BlockType >::steal_request ( bid_type  bid) [inline]
template<class BlockType>
void stxxl::write_pool< BlockType >::swap ( write_pool< BlockType > &  obj) [inline]
template<class BlockType>
request_ptr stxxl::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 119 of file write_pool.h.

References STXXL_VERBOSE_WPOOL.

Referenced by main().


Member Data Documentation

template<class BlockType>
std::list<busy_entry> stxxl::write_pool< BlockType >::busy_blocks [protected]

Definition at line 65 of file write_pool.h.

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

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

Definition at line 63 of file write_pool.h.

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