ACE  6.3.3
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
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]

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. More...
 
virtual void add (T *element)
 
virtual T * remove (void)
 
virtual size_t size (void)
 Returns the current size of the free list. More...
 
virtual void resize (size_t newsize)
 Resizes the free list to newsize. More...
 
- Public Member Functions inherited from ACE_Free_List< T >
virtual ~ACE_Free_List (void)
 Destructor - removes all the elements from the free_list. More...
 

Protected Member Functions

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

Protected Attributes

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

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 
)

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  )
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)
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 >
void ACE_Locked_Free_List< T, ACE_LOCK >::alloc ( size_t  n)
protectedvirtual

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)
protectedvirtual

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
template<class T , class ACE_LOCK >
T * ACE_Locked_Free_List< T, ACE_LOCK >::remove ( void  )
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 >
void ACE_Locked_Free_List< T, ACE_LOCK >::resize ( size_t  newsize)
virtual

Resizes the free list to newsize.

Implements ACE_Free_List< T >.

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

Returns the current size of the free list.

Implements ACE_Free_List< T >.

Member Data Documentation

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 >::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 >::lwm_
protected

Low water mark.

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>
ACE_LOCK ACE_Locked_Free_List< T, ACE_LOCK >::mutex_
protected

Synchronization variable for ACE_Timer_Queue.

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.


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