ACE  6.1.0
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions
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 
)

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) [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) [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]
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:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines