ACE_Locked_Free_List< T, ACE_LOCK > Class Template Reference

Implements a free list. More...

#include <Free_List.h>

Inheritance diagram for ACE_Locked_Free_List< T, ACE_LOCK >:

Inheritance graph
[legend]
Collaboration diagram for ACE_Locked_Free_List< T, ACE_LOCK >:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 ACE_Locked_Free_List (int mode=ACE_FREE_LIST_WITH_POOL, size_t prealloc=ACE_DEFAULT_FREE_LIST_PREALLOC, size_t lwm=ACE_DEFAULT_FREE_LIST_LWM, size_t hwm=ACE_DEFAULT_FREE_LIST_HWM, size_t inc=ACE_DEFAULT_FREE_LIST_INC)
virtual ~ACE_Locked_Free_List (void)
 Destructor - removes all the elements from the free_list.
virtual void add (T *element)
virtual T * remove (void)
virtual size_t size (void)
 Returns the current size of the free list.
virtual void resize (size_t newsize)
 Resizes the free list to newsize.

Protected Member Functions

virtual void alloc (size_t n)
 Allocates n extra nodes for the freelist.
virtual void dealloc (size_t n)
 Removes and frees n nodes from the freelist.

Protected Attributes

int mode_
T * free_list_
 Pointer to the first node in the freelist.
size_t lwm_
 Low water mark.
size_t hwm_
 High water mark.
size_t inc_
 Increment value.
size_t size_
 Keeps track of the size of the list.
ACE_LOCK mutex_
 Synchronization variable for ACE_Timer_Queue.

Private Member Functions

 ACE_Locked_Free_List (const ACE_Locked_Free_List< T, ACE_LOCK > &)
void operator= (const ACE_Locked_Free_List< T, ACE_LOCK > &)


Detailed Description

template<class T, class ACE_LOCK>
class ACE_Locked_Free_List< T, ACE_LOCK >

Implements a free list.

This class maintains a free list of nodes of type T. It depends on the type T having a <get_next> and <set_next> method. It maintains a mutex so the freelist can be used in a multithreaded program .


Constructor & Destructor Documentation

template<class T, class ACE_LOCK>
ACE_Locked_Free_List< T, ACE_LOCK >::ACE_Locked_Free_List ( int  mode = ACE_FREE_LIST_WITH_POOL,
size_t  prealloc = ACE_DEFAULT_FREE_LIST_PREALLOC,
size_t  lwm = ACE_DEFAULT_FREE_LIST_LWM,
size_t  hwm = ACE_DEFAULT_FREE_LIST_HWM,
size_t  inc = ACE_DEFAULT_FREE_LIST_INC 
) [inline]

Constructor takes a mode (i.e., ACE_FREE_LIST_WITH_POOL or ACE_PURE_FREE_LIST), a count of the number of nodes to <prealloc>, a low and high water mark (<lwm> and <hwm>) that indicate when to allocate more nodes, an increment value (<inc>) that indicates how many nodes to allocate when the list must grow.

template<class T, class ACE_LOCK>
ACE_Locked_Free_List< T, ACE_LOCK >::~ACE_Locked_Free_List ( void   )  [inline, virtual]

Destructor - removes all the elements from the free_list.

template<class T, class ACE_LOCK>
ACE_Locked_Free_List< T, ACE_LOCK >::ACE_Locked_Free_List ( const ACE_Locked_Free_List< T, ACE_LOCK > &   )  [private]


Member Function Documentation

template<class T, class ACE_LOCK>
void ACE_Locked_Free_List< T, ACE_LOCK >::add ( T *  element  )  [inline, virtual]

Inserts an element onto the free list (if it isn't past the high water mark).

Implements ACE_Free_List< T >.

template<class T, class ACE_LOCK>
T * ACE_Locked_Free_List< T, ACE_LOCK >::remove ( void   )  [inline, virtual]

Takes a element off the freelist and returns it. It creates <inc> new elements if the size is at or below the low water mark.

Implements ACE_Free_List< T >.

template<class T, class ACE_LOCK>
size_t ACE_Locked_Free_List< T, ACE_LOCK >::size ( void   )  [inline, virtual]

Returns the current size of the free list.

Implements ACE_Free_List< T >.

template<class T, class ACE_LOCK>
void ACE_Locked_Free_List< T, ACE_LOCK >::resize ( size_t  newsize  )  [inline, virtual]

Resizes the free list to newsize.

Implements ACE_Free_List< T >.

template<class T, class ACE_LOCK>
void ACE_Locked_Free_List< T, ACE_LOCK >::alloc ( size_t  n  )  [inline, protected, virtual]

Allocates n extra nodes for the freelist.

template<class T, class ACE_LOCK>
void ACE_Locked_Free_List< T, ACE_LOCK >::dealloc ( size_t  n  )  [inline, protected, virtual]

Removes and frees n nodes from the freelist.

template<class T, class ACE_LOCK>
void ACE_Locked_Free_List< T, ACE_LOCK >::operator= ( const ACE_Locked_Free_List< T, ACE_LOCK > &   )  [private]


Member Data Documentation

template<class T, class ACE_LOCK>
int ACE_Locked_Free_List< T, ACE_LOCK >::mode_ [protected]

Free list operation mode, either ACE_FREE_LIST_WITH_POOL or ACE_PURE_FREE_LIST.

template<class T, class ACE_LOCK>
T* ACE_Locked_Free_List< T, ACE_LOCK >::free_list_ [protected]

Pointer to the first node in the freelist.

template<class T, class ACE_LOCK>
size_t ACE_Locked_Free_List< T, ACE_LOCK >::lwm_ [protected]

Low water mark.

template<class T, class ACE_LOCK>
size_t ACE_Locked_Free_List< T, ACE_LOCK >::hwm_ [protected]

High water mark.

template<class T, class ACE_LOCK>
size_t ACE_Locked_Free_List< T, ACE_LOCK >::inc_ [protected]

Increment value.

template<class T, class ACE_LOCK>
size_t ACE_Locked_Free_List< T, ACE_LOCK >::size_ [protected]

Keeps track of the size of the list.

template<class T, class ACE_LOCK>
ACE_LOCK ACE_Locked_Free_List< T, ACE_LOCK >::mutex_ [protected]

Synchronization variable for ACE_Timer_Queue.


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

Generated on Wed Apr 23 02:39:40 2008 for ACE by  doxygen 1.5.5